如何根据某些列值比较两个数据框并在 Pandas 中删除它们

Jit*_*eri 2 python-3.x pandas

我有两个数据框。

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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

  John    45   Male     31      03    1975
   Tom    22   Male     01      01    1990
  Hary    56   Male     15      09    1970
Run Code Online (Sandbox Code Playgroud)

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

WeN*_*Ben 5

只需做简单的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
Run Code Online (Sandbox Code Playgroud)