【发布时间】:2013-04-22 08:42:26
【问题描述】:
好的,我已经阅读了 Stack Overflow 上的几个主题。我认为这对我来说相当容易,但我发现我仍然没有很好地掌握 Python。我尝试了位于How to combine 2 csv files with common column value, but both files have different number of lines 的示例,这很有帮助,但我仍然没有得到我希望达到的结果。
基本上我有 2 个 csv 文件,它们有一个共同的第一列。我想合并2。即
filea.csv
标题,阶段,一月,二月 该死,3.001,0.421,0.532 好的,2.829,1.036,0.751 三、1.115、1.146、2.921fileb.csv
标题,三月,四月,五月,六月, 该死,0.631,1.321,0.951,1.751 好的,1.001,0.247,2.456,0.3216 三,0.285,1.283,0.924,956output.csv(不是我得到的,而是我想要的)
标题,阶段,1 月,2 月,3 月,4 月,5 月,6 月 该死,3.001,0.421,0.532,0.631,1.321,0.951,1.751 好的,2.829,1.036,0.751,1.001,0.247,2.456,0.3216 三、1.115、1.146、2.921、0.285、1.283、0.924、956output.csv(我实际得到的输出)
标题,二月,五月 好的,0.751,2.456 三、2.921、0.924 该死,0.532,0.951我正在尝试的代码:
'''
testing merging of 2 csv files
'''
import csv
import array
import os
with open('Z:\\Desktop\\test\\filea.csv') as f:
r = csv.reader(f, delimiter=',')
dict1 = {row[0]: row[3] for row in r}
with open('Z:\\Desktop\\test\\fileb.csv') as f:
r = csv.reader(f, delimiter=',')
#dict2 = {row[0]: row[3] for row in r}
dict2 = {row[0:3] for row in r}
print str(dict1)
print str(dict2)
keys = set(dict1.keys() + dict2.keys())
with open('Z:\\Desktop\\test\\output.csv', 'wb') as f:
w = csv.writer(f, delimiter=',')
w.writerows([[key, dict1.get(key, "''"), dict2.get(key, "''")] for key in keys])
非常感谢任何帮助。
【问题讨论】:
-
你能用更简单的方式描述你想要什么吗?也许会说:我想要合并月份列,其余列来自 fileX
标签: python csv dictionary merge key