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

2024-10-02 18:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图比较两个数据帧并打印差异。当我尝试比较时,我得到一个“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

Tags: 数据nameaaronannjonasxavierhenrybarbara
1条回答
网友
1楼 · 发布于 2024-10-02 18:24:34

为了使这两个数据帧具有不同的大小,您可以将数据帧aName中的值与数据帧b中所有Name字段的列表进行比较。对另一侧重复上述步骤

生成不在b.Name.to_list()中的a.Name掩码,然后使用.loc[]进行选择。另一方面也是如此:

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

相关问题 更多 >