第一个数据帧 d1:索引列是州和城市
**2008q2 2009q2 Price Ratio**
**State City**
Alabama Montevallo 119000.000000 125200.000000 0.950479
Tuscaloosa 139366.666667 136933.333333 1.017770
Alaska Fairbanks 254733.333333 225833.333333 1.127970
第二个数据帧 d2:
State City
0 Alabama Auburn
1 Alabama Florence
2 Alabama Tuscaloosa
我需要过滤/删除 d1 中 [State,City] 不在 d2 中的行。
最佳答案
您可以使用join
与内部
连接:
df = df2.join(df1, on=['State','City'], how='inner')
print (df)
State City 2008q2 2009q2 Price Ratio
2 Alabama Tuscaloosa 139366.666667 136933.333333 1.01777
另一个解决方案 merge
,如果只是两个df
中相同列的交集,则可以省略参数on
:
df = pd.merge(df1.reset_index(), df2)
#df = pd.merge(df1.reset_index(), df2, on=['State','City'])
print (df)
State City 2008q2 2009q2 Price Ratio
0 Alabama Tuscaloosa 139366.666667 136933.333333 1.01777
关于python - 在 Pandas 中使用多重索引过滤数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865606/