首页 > 解决方案 > 如何根据某些列值比较两个数据框并在熊猫中删除它们

问题描述

我有两个数据框。

df1:

userID    ID    Sex   Date   Month    Year   Security
  John    45   Male     31      03    1975        Low
   Tom    22   Male     01      01    1990       High
  Mary    33 Female     23      05    1990     Medium
  Hary    56   Male     15      09    1970       High

df2:

userID    ID    Sex   Date   Month    Year
  Hari    45   Male     31      03    1975
  Luka    22   Male     01      01    1990
 Johan    33 Female     23      05    1990
 Irfan    56   Male     29      09    1971
  John    45   Male     31      03    1975
   Tom    22   Male     01      01    1990
  Mary    34 Female     34      05    1980
  Hary    56   Male     15      09    1970

我想将 df2 与 df1 进行比较,并仅保留 df2 中在列中具有共同值的那些行(用户 ID、ID、日期、月份、年份)

所以我的新 df2 应该是这样的:

  John    45   Male     31      03    1975
   Tom    22   Male     01      01    1990
  Hary    56   Male     15      09    1970

在熊猫中获得这个的最佳方法是什么?有人可以帮助我吗?

标签: python-3.xpandas

解决方案


只需简单地merge跟随dropna

df2.merge(df1,how='left').dropna().drop('Security',1)
Out[318]: 
  userID  ID   Sex  Date  Month  Year
4   John  45  Male    31      3  1975
5    Tom  22  Male     1      1  1990
7   Hary  56  Male    15      9  1970

推荐阅读