Как создать список в Python с уникальными значениями CSV-файла?
у меня есть CSV-файл, который выглядит следующим образом,
1994, Category1, Something Happened 1
1994, Category2, Something Happened 2
1995, Category1, Something Happened 3
1996, Category3, Something Happened 4
1998, Category2, Something Happened 5
Я хочу создать два списка,
Category = [Category1, Category2, Category3]
и
Year = [1994, 1995, 1996, 1998]
Я хочу опустить дубликаты в столбце. Я читаю файл следующим образом,
DataCaptured = csv.reader(DataFile, delimiter=',')
DataCaptured.next()
и перебирая,
for Column in DataCaptured:
2 ответов
Вы можете сделать:
DataCaptured = csv.reader(DataFile, delimiter=',', skipinitialspace=True)
Category, Year = [], []
for row in DataCaptured:
if row[0] not in Year:
Year.append(row[0])
if row[1] not in Category:
Category.append(row[1])
print Category, Year
# ['Category1', 'Category2', 'Category3'] ['1994', '1995', '1996', '1998']
как указано в комментариях, если порядок не имеет значения, использование набора будет проще и быстрее:
Category, Year = set(), set()
for row in DataCaptured:
Year.add(row[0])
Category.add(row[1])
очень краткий способ сделать это-использовать pandas
преимущества: она быстрее КШМ pharser; и работает в столбцы (поэтому он требует только одного df.apply(set)
чтобы вы там):
In [244]:
#Suppose the CSV is named temp.csv
df=pd.read_csv('temp.csv',header=None)
df.apply(set)
Out[244]:
0 set([1994, 1995, 1996, 1998])
1 set([ Category2, Category3, Category1])
2 set([ Something Happened 4, Something Happene...
dtype: object
недостатком является то, что он возвращает pandas.Series
, и чтобы получить доступ к Каждый список, вам нужно сделать что-то вроде list(df.apply(set)[0])
.
редактировать
если заказ должен быть сохранен, это также можно сделать очень легко, например:
for i, item in df.iteritems():
print item.unique()
item.unique()
вернутся numpy.array
s, вместо list
s.