通过匹配另一个数据框中的行来过滤熊猫数据框

时间:2020-10-16 15:32:40

标签: python pandas

我正在尝试从数据框中获取与设定的星期年份组合匹配的行

df = pd.DataFrame({'Year':[2020, 2020, 2019, 2019, 2019, 2020],
              'Week':[1, 2, 4, 5, 2, 4],
              'other data':[5, 5, 5, 5, 5, 5]})

wks = pd.DataFrame({'Year':[2020,2020,2019], 'Week':[1, 2, 4]}) 

我希望能够使用wks将与那些周/年组合匹配的行保留在df中,所以输出将是:

   Year  Week  other data
0  2020     1           5
1  2020     2           5
5  2020     4           5

我按如下所示尝试了.loc,但这只是单独检查每一列(在此示例中返回所有df),而不是仅返回Year和Week都匹配的地方。

df.loc[df['Week'].isin(wks['Week']) & (df['Year'].isin(wks['Year']))]

任何帮助都非常感激:)

1 个答案:

答案 0 :(得分:2)

使用df.merge

In [816]: wks.merge(df, on=['Year', 'Week'])
Out[816]: 
   Year  Week  other data
0  2020     1           5
1  2020     2           5
2  2019     4           5