为了账号安全,请及时绑定邮箱和手机立即绑定

从熊猫数据框中删除与另一个数据框中的列组合不匹配的行

从熊猫数据框中删除与另一个数据框中的列组合不匹配的行

慕侠2389804 2022-07-12 14:43:54
我的数据帧 1 看起来像:   Col1 Col2 Col31   A    4    ab2   A    5    de3   A    2    ah4   B    1    ac5   B    3    jd6   B    2    am数据框2:  col1 col21  A    42  B    3如何删除数据框 1 中与数据框 2 的行组合不匹配的所有行?预期输出:   Col1 Col2 Col31   A    4    ab2   B    3    jd
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

与内部连接一起使用DataFrame.merge,只有必要的重命名列:


df = df2.rename(columns={'col1':'Col1','col2':'Col2'}).merge(df1, on=['Col1','Col2'])

#on should be omited, then merge by intersection of columns of df1, df2

#df = df2.rename(columns={'col1':'Col1','col2':'Col2'}).merge(df1)


print (df)

  Col1  Col2 Col3

0    A     4   ab

1    B     3   jd

另一个想法是使用left_on和right_on参数,然后删除具有名称的列df2.columns:


df = (df2.merge(df1, left_on=['col1','col2'], 

                     right_on=['Col1','Col2']).drop(df2.columns, axis=1))

print (df)

  Col1  Col2 Col3

0    A     4   ab

1    B     3   jd

如果列名相同:


print (df2)

  Col1  Col2

1    A     4

2    B     3


df = df2.merge(df1, on=['Col1','Col2'])

#df = df2.merge(df1)

print (df)

  Col1  Col2 Col3

0    A     4   ab

1    B     3   jd


查看完整回答
反对 回复 2022-07-12
?
郎朗坤

TA贡献1921条经验 获得超9个赞

您也可以使用 join 进行内部连接


dfR = df1.join( df ,on=['Col1','Col2'] ,how='inner',rsuffix='_x')

dfR[['Col1','Col2','Col3']]

这也会给你同样的结果


   Col1 Col2 Col3

1   A    4    ab

2   B    3    jd

有关更多详细信息,请查看这些链接加入文档和 示例


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信