如何比较具有多种数据类型的两个数据帧
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
为了使 2 个数据帧的大小可以不同,您可以将数据帧 a
列 Name
中的值与数据帧 Name
中所有字段的列表进行比较16=]。对另一侧重复。
不在 b.Name.to_list() 中构建 a.Name 的掩码,然后使用 .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])
输出:
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
我正在尝试比较两个数据帧并打印差异。当我尝试比较时,我得到一个“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
为了使 2 个数据帧的大小可以不同,您可以将数据帧 a
列 Name
中的值与数据帧 Name
中所有字段的列表进行比较16=]。对另一侧重复。
不在 b.Name.to_list() 中构建 a.Name 的掩码,然后使用 .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])
输出:
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