Python 查找两行数据帧之间的差异

Python 查找两行数据帧之间的差异,python,pandas,join,dataframe,Python,Pandas,Join,Dataframe,我有两个数据帧,它们有完全相同的列。所以它们看起来像这样: Dataframe1: C1 C2 C3 1 A X 2 B Y Dataframe2: C1 C2 C3 1 A X 3 C Z 我想找出这两个数据帧之间的区别。基本上,我需要以下3个输出: 2个数据帧中相同行的数量在本例中为“1” dataframe1中存在行,但dataframe2中缺少行 2 B Y dataframe2中存在行,但dataframe1中缺少行 3 C Z 我没有找到与以下内容

我有两个数据帧,它们有完全相同的列。所以它们看起来像这样:

Dataframe1:
C1 C2 C3
1  A  X
2  B  Y

Dataframe2:
C1 C2 C3
1  A  X
3  C  Z
我想找出这两个数据帧之间的区别。基本上,我需要以下3个输出:

  • 2个数据帧中相同行的数量在本例中为“1”
  • dataframe1中存在行,但dataframe2中缺少行

    2  B  Y
    
  • dataframe2中存在行,但dataframe1中缺少行

    3  C  Z
    
  • 我没有找到与以下内容相同的行:

    same_line_count = (pd.merge(df1, df2, on=['C1', 'C2', 'C3'], how='inner')).shape[0]
    
    但我找不到其他2个。

    我认为您需要使用外部联接和参数
    指示器
    ,用于过滤和计数相同的行
    总和
    布尔掩码:

    print (Dataframe1)
       C1 C2 C3
    0   1  A  X
    1   2  B  Y
    2   2  C  Y
    
    print (Dataframe2)
       C1 C2 C3
    0   1  A  X
    1   3  C  Z
    
    df = pd.merge(Dataframe1, Dataframe2, indicator=True, how='outer')
    print (df)
       C1 C2 C3      _merge
    0   1  A  X        both
    1   2  B  Y   left_only
    2   2  C  Y   left_only
    3   3  C  Z  right_only
    
    both = (df['_merge'] == 'both').sum()
    print (both)
    1
    
    left_only = df.loc[df['_merge'] == 'left_only', Dataframe1.columns]
    print (left_only)
       C1 C2 C3
    1   2  B  Y
    2   2  C  Y
    
    right_only = df.loc[df['_merge'] == 'right_only', Dataframe1.columns]
    print (right_only)
       C1 C2 C3
    3   3  C  Z