首页 > 解决方案 > Pandas 删除数据帧中不在另一个数据帧中的行

问题描述

我有两个熊猫数据框,它们有一些共同的行。

我想识别 df1 中不在 df2 中的行(基于 df1.x = df2.x 之类的条件)并将它们从 df1 中删除。

还保持 df2 中的所有内容不变。

df1 = pandas.DataFrame(data = {'x' : [1, 2, 3, 4, 5], 'y' : [10, 11, 12, 13, 14]}) 
df2 = pandas.DataFrame(data = {'x' : [4, 5, 6], 'z' : [10, 13, 14]})

标签: pythonpandasdataframe

解决方案


请试试这个:

df = pd.merge(df1, df2, how='left', indicator='Exist')
df['Exist'] = np.where(df.Exist == 'both', True, False)
df = df[df['Exist']==True].drop(['Exist','z'], axis=1)

推荐阅读