我有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:
一个非常简洁的方法是使用
pandas
,其好处是:它有一个更快的CSV pharser;它在列中工作(因此它只需要一个df.apply(set)
就可以实现这一点):缺点是它返回一个
pandas.Series
,要访问每个列表,您需要执行类似list(df.apply(set)[0])
的操作。编辑
如果必须保留订单,也可以很容易地完成,例如:
item.unique()
将返回numpy.array
s,而不是list
sdawg
指出了Python中最棒的技巧之一:使用set()
从列表中删除重复项。dawg
展示了如何通过将每个项添加到一个set
中来从头构建唯一列表,这非常完美。但这里有另一种等效的方法,使用list(set())
方法生成一个包含重复项的列表和一个不包含重复项的列表:你可以:
如评论中所述,如果顺序无关紧要,则使用集合将更容易和更快:
相关问题 更多 >
编程相关推荐