我有一个带有MultiIndex的DataFrame(DF1)和许多其他列。在另一个DataFrame(DF2)中,我有2列包含MultiIndex中的一组值。我想从DF1中选择MultiIndex与DF2中的值匹配的行。
df1 = pd.DataFrame({'month': [1, 3, 4, 7, 10],
'year': [2012, 2012, 2014, 2013, 2014],
'sale':[55, 17, 40, 84, 31]})
df1 = df1.set_index(['year','month'])
sale
year month
2012 1 55
2012 3 17
2014 4 40
2013 7 84
2014 10 31
df2 = pd.DataFrame({'year': [2012,2014],
'month': [1, 10]})
year month
0 2012 1
1 2014 10
我想创建一个新的DataFrame:
sale
year month
2012 1 55
2014 10 31
我尝试使用.isin,.loc,切片等多种变体,但一直遇到错误。
答案 0 :(得分:1)
你可以set_index
df2
以同样的方式传递索引:
In[110]:
df1.loc[df2.set_index(['year','month']).index]
Out[110]:
sale
year month
2012 1 55
2014 10 31
更具可读性的版本:
In[111]:
idx = df2.set_index(['year','month']).index
df1.loc[idx]
Out[111]:
sale
year month
2012 1 55
2014 10 31