使用Pandas中的Multiindex过滤数据帧

时间:2017-03-17 19:23:38

标签: python pandas

第一个数据帧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中的行。

2 个答案:

答案 0 :(得分:1)

您可以join使用inner加入:

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

如果仅on中的相同列的交集,则可以省略merge,参数df的另一个解决方案:

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

答案 1 :(得分:0)

执行了以下步骤:

  1. d1和d2之间的外连接,指示符= True
  2. 从外部联接中提取left_only条目以获取rows_in_df1_not_in_df2。

                      **2008q2         2009q2          Price Ratio**
    

    州城 Alabama Montevallo 119000.000000 125200.000000 0.950479 阿拉斯加费尔班克斯254733.333333 225833.333333 1.127970

  3. 想知道布尔屏蔽是否有其他方式?