可能有以前的问题,但当你搜索它们时,它们不会出现。
这个问题及其标题非常有用。
import pandas as pd
df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz'], 'x1': [1, 2, 3], 'x2': [11, 22, 33]})
df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'bazz'], 'y1': [1, 2, 3], 'y2': [111, 222, 333]})
merged_df = pd.merge(df1, df2, how= 'inner', left_on=['lkey','x1'], right_on=['rkey','y1'])
merged_df
如何显示df1的哪些行没有合并?
列出带有“lkey”和“x1”列的 df1 的未合并行将非常有帮助。
baz 3
您可以检查 df .isin
merged_df
数据帧,然后使用 ~
作为 bool 系列传递以返回被合并的行未合并:
import pandas as pd
df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz'], 'x1': [1, 2, 3], 'x2': [11, 22, 33]})
df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'bazz'], 'y1': [1, 2, 3], 'y2': [111, 222, 333]})
merged_df = pd.merge(df1, df2, how= 'inner', left_on=['lkey','x1'], right_on=['rkey','y1'])
df1[~df1.isin(merged_df)].dropna()
Out[1]:
lkey x1 x2
2 baz 3.0 33.0
您还可以根据 Trenton 的评论进行 outer
合并并使用 indicator=True
进行检查,或者简单地在 lkey
的子集上使用:
merged_df = pd.merge(df1, df2, how= 'outer', left_on=['lkey','x1'], right_on=['rkey','y1']).dropna(subset=['lkey'])