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 B Y
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