[英]How to compare two dataframes with multiple data types
我正在尝试比较两个数据框并打印差异。 当我尝试比较时,我得到一个“ValueError:只能比较标签相同的系列对象”
这是我正在比较的数据帧的示例。
Name NetAmount
0 AARON, ANN 440.40
1 AARON, BARBARA 334.23
2 AARON, XAVIER 378.09
3 ABBOTT, KEIFER 469.13
4 ABDO, WALEED 442.87
5 ABEDI, JONAS 466.69
6 ABELL, ASHLEY 288.09
7 ABOKO, HENRY 570.29
8 ABREU, IRVING 500.83
9 ABUHAMRA, ABDULAZIZ 429.73
Name NetAmount
0 AARON, ANN 371.70
1 AARON, BARBARA 357.89
2 AARON, XAVIER 406.46
3 ABBOTT, KEIFER 388.57
4 ABDO, WALEED 442.87
5 ABEDI, JONAS 466.69
6 ABOKO, HENRY 467.51
7 ABREU, IRVING 821.19
8 ABUHAMRA, ABDULAZIZ 422.77
9 ABUKHDAIR, ADAM 348.86
Name Object
NetAmount Float64
这是我尝试过的给我错误的方法:
if a.Name != b.Name:
print(a.Name)
else:
pass
一般而言,这两个数据帧可以具有不同的大小,您可以将 dataframe a
列Name
中的值与 dataframe b
中所有Name
字段的列表进行比较。 对另一侧重复。
a.Name 的掩码不在 b.Name.to_list() 中,然后使用.loc[]
到 select。 反过来类似:
mask1 = ~a.Name.isin(b.Name.to_list())
print(a.loc[mask1])
mask2 = ~b.Name.isin(a.Name.to_list())
print(b.loc[mask2])
Output:
Name NetAmount
6 ABELL, ASHLEY 288.09
Name NetAmount
9 ABUKHDAIR, ADAM 348.86
或者,如果您只需要打印名称字段:
print(a.Name.loc[mask1])
print(b.Name.loc[mask2])
6 ABELL, ASHLEY
Name: Name, dtype: object
9 ABUKHDAIR, ADAM
Name: Name, dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.