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

我的数据帧 1 看起来像:


   Col1 Col2 Col3

1   A    4    ab

2   A    5    de

3   A    2    ah

4   B    1    ac

5   B    3    jd

6   B    2    am

数据框2:


  col1 col2

1  A    4

2  B    3

如何删除数据框 1 中与数据框 2 的行组合不匹配的所有行?


预期输出:


   Col1 Col2 Col3

1   A    4    ab

2   B    3    jd


慕侠2389804
浏览 85回答 2
2回答

收到一只叮咚

与内部连接一起使用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 Col30    A     4   ab1    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 Col30    A     4   ab1    B     3   jd如果列名相同:print (df2)  Col1  Col21    A     42    B     3df = df2.merge(df1, on=['Col1','Col2'])#df = df2.merge(df1)print (df)  Col1  Col2 Col30    A     4   ab1    B     3   jd

郎朗坤

您也可以使用 join 进行内部连接dfR = df1.join( df ,on=['Col1','Col2'] ,how='inner',rsuffix='_x')dfR[['Col1','Col2','Col3']]这也会给你同样的结果   Col1 Col2 Col31   A    4    ab2   B    3    jd有关更多详细信息,请查看这些链接加入文档和 示例
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python