【发布时间】:2020-08-20 08:27:42
【问题描述】:
我有两个不同的数据框需要比较。
这两个数据帧具有不同的行数,并且没有 Pk 其复合主键 (id||ver||name||prd||loc)
df1:
id ver name prd loc
a 1 surya 1a x
a 1 surya 1a y
a 2 ram 1a x
b 1 alex 1b z
b 1 alex 1b y
b 2 david 1b z
df2:
id ver name prd loc
a 1 surya 1a x
a 1 surya 1a y
a 2 ram 1a x
b 1 alex 1b z
我尝试了下面的代码,如果行数相同,则此代码可以正常工作,但如果与上述情况类似,则无法正常工作。
df1 = pd.DataFrame(Source)
df1 = df1.astype(str) #converting all elements as objects for easy comparison
df2 = pd.DataFrame(Target)
df2 = df2.astype(str) #converting all elements as objects for easy comparison
header_list = df1.columns.tolist() #creating a list of column names from df1 as the both df has same structure
df3 = pd.DataFrame(data=None, columns=df1.columns, index=df1.index)
for x in range(len(header_list)) :
df3[header_list[x]] = np.where(df1[header_list[x]] == df2[header_list[x]], 'True', 'False')
df3.to_csv('Output', index=False)
如果有不同的行数,请告诉我如何比较数据集。
【问题讨论】:
-
由于两个数据框都具有共同的
id列,将检查限制为仅id列是否足够?请使用您的 dfs 的输出更新您的帖子。这个post 应该可以帮助您入门。
标签: python python-3.x pandas dataframe compare