我有两个csv文件。
one.csv:
1, 12.1455675, -13.1287564, 23, 9, 4.5, 4
2, 12.5934593, -13.0856385, 14, 5, 9.7, 6
3, 12.0496204, -13.8938582, 14, 6, 3.4, 9
4, 12.1456084, -12.1939589, 45, 2, 3.4, 8
two.csv:
9, 12.0496, -13.8939, .3, 55
3, 12.1456, -13.1288, 3.4, 9
我想要做的是根据第一列和第二列匹配两个csv文件。我想要另一个具有匹配列1和2的csv文件,但还包括来自one.csv的two.csv和第6列值的相应第3列值。像这样:
12.0496, -13.8939, 55, 3.4
12.1456, -12.1288, 9, 4.5
我不确定如何解决这个问题,特别是当two.csv中的某些值被舍入时。
非常感谢任何帮助!
答案 0 :(得分:3)
您可以使用pandas
' io来读取/写入csv文件,并使用database-style joining/merging capabilities来合并文件:
import pandas as pd
normalize = lambda x: "%.4f" % float(x) # round
df = pd.read_csv("one.csv", index_col=(0,1), usecols=(1, 2, 5),
header=None, converters=dict.fromkeys([1,2], normalize))
df2 = pd.read_csv("two.csv", index_col=(0,1), usecols=(1, 2, 4),
header=None, converters=dict.fromkeys([1,2], normalize))
result = df.join(df2, how='inner')
result.to_csv("output.csv", header=None) # write as csv
12.0496,-13.8939,3.4,55
12.1456,-13.1288,4.5,9
答案 1 :(得分:1)
这是一个非常普遍的问题。
至于我自己,同样的答案:对于中期解决方案,在数据库中导入,然后使用JOIN执行查询......
尝试搜索: https://stackoverflow.com/search?q=combining+csv+python