繁体   English   中英

如何比较具有多种数据类型的两个数据帧

[英]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 aName中的值与 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM