我有一个如下所示的数据集:
id,created_at,username
1,2006-10-09T18:21:51Z,hey
2,2007-10-09T18:30:28Z,bob
3,2008-10-09T18:40:33Z,bob
4,2009-10-09T18:47:42Z,john
5,2010-10-09T18:51:04Z,brad
...
Run Code Online (Sandbox Code Playgroud)
我包含1M +行.我想使用python从中提取用户名列表而不重复.到目前为止我的代码看起来像这样:
import csv
file1 = file("sample.csv", 'r')
file2 = file("users.csv", 'w')
reader = csv.reader(file1)
writer = csv.writer(file2)
rownum = 0
L = []
for row in reader:
if not rownum == 0:
if not row[2] in L:
L.append(row[2])
writer.writerow(row[2])
rownum += 1
Run Code Online (Sandbox Code Playgroud)
我有几个问题:1 - 我在users.csv中的输出如下所示:
h,e,y
b,o,b
j,o,h,n
b,r,a,d
Run Code Online (Sandbox Code Playgroud)
如何删除每个字母之间的逗号?
2 - 我的代码不是很优雅,有没有办法将csv文件作为矩阵导入以选择最后一行,然后在javascript中使用像underscore.js这样的优雅库来删除重复项?
非常感谢
您可以使用set此处,它提供O(1)与O(N)列表相比的项查找.
seen = set()
add_ = seen.add
next(reader) #skip header
writer.writerows([row[-1]] for row in reader if row[-1] not in seen
and not add_(row[-1]))
Run Code Online (Sandbox Code Playgroud)
并始终使用with语句处理文件,它会自动为您关闭文件:
with file("sample.csv", 'r') as file1, file("users.csv", 'w') as file2:
#Do stuff with file1 and file2 here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |