【发布时间】:2018-07-24 10:22:51
【问题描述】:
我已经看到了很多关于此的问题/答案,但我所看到的都没有解决我的问题,所以任何帮助都将不胜感激。
我有一个非常大的 CSV 文件,其中包含一些重复的列条目,但我想要一个脚本来匹配和合并基于第一列的行。 (我不想使用 pandas。我使用的是 Python 2.7。文件中没有 CSV 标头)
这是输入:
2144, 2016, 505, 20005, 2007, PP, GPP, DAC, UNSW
8432, 2015, 505, 20005, 2041, LL, GLO, X2, UNSW
0055, 0.00, 0.00, 2014, 2017
2144, 0.00, 0.00, 2016, 959
8432, 22.9, 0.00, 2015, 2018
0055, 2014, 505, 20004, 2037, LL, GLO, X2, QAL
想要的输出:
2144, 0.00, 0.00, 2016, 959, 2016, 505, 20005, 2007, PP, GPP, DAC, UNSW
0055, 0.00, 0.00, 2014, 2017, 2014, 505, 20004, 2037, LL, GLO, X2, QAL
8432, 22.9, 0.00, 2015, 2018, 2015, 505, 20005, 2041, LL, GLO, X2, UNSW
我试过了:
reader = csv.reader(open('input.csv))
result = {}
for row in reader:
idx = row[0]
values = row[1:]
if idx in result:
result[idx] = [result[idx][i] or v for i, v in enumerate(values)]
else:
result[idx] = values
这用于搜索重复项:
with open('1.csv','r') as in_file, open('2.csv','w') as out_file:
seen = set() # set for fast O(1) amortized lookup
for line in in_file:
if line in seen: continue
但是这些对我没有帮助-我迷路了
任何帮助都会很棒。
谢谢
【问题讨论】:
-
感谢 Piinthesky。我在上面进行了编辑。我迷路了,不知道从哪里开始