用 python pandas 比较两个 csv 文件

新手上路,请多包涵

我有两个 csv 文件都包含两列。

第一个有产品 ID,第二个有序列号。

我需要查找第一个 csv 中的所有序列号,并在第二个 csv 上找到匹配项。结果报告,将有匹配的序列号,以及来自每个 csv 的相应产品 ID,在单独的列中我确实修改了下面的代码,没有运气。

你会如何处理这个问题?

 import pandas as pd
    A=set(pd.read_csv("c1.csv", index_col=False, header=None)[0]) #reads the csv, takes only the first column and creates a set out of it.
    B=set(pd.read_csv("c2.csv", index_col=False, header=None)[0]) #same here
    print(A-B) #set A - set B gives back everything thats only in A.
    print(B-A) # same here, other way around.

原文由 user7609771 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我想你需要 merge

 A = pd.DataFrame({'product id':   [1455,5452,3775],
                    'serial number':[44,55,66]})

print (A)

B = pd.DataFrame({'product id':   [7000,2000,1000],
                    'serial number':[44,55,77]})

print (B)

print (pd.merge(A, B, on='serial number'))
   product id_x  serial number  product id_y
0          1455             44          7000
1          5452             55          2000

原文由 jezrael 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这个:

 A = pd.read_csv("c1.csv", header=None, usecols=[0], names=['col']).drop_duplicates()
B = pd.read_csv("c2.csv", header=None, usecols=[0], names=['col']).drop_duplicates()
# A - B
pd.merge(A, B, on='col', how='left', indicator=True).query("_merge == 'left_only'")
# B - A
pd.merge(A, B, on='col', how='right', indicator=True).query("_merge == 'right_only'")

原文由 MaxU - stop genocide of UA 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题