python - 在 Pandas 中使用多重索引过滤数据帧

标签 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 中的行。

最佳答案

您可以使用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/

相关文章:

python - Pandas 每日 groupby 条件基于第一个更高的值

python - 字典是在 Python 3.6+ 中排序的吗?

python - 基于包含值的其他列复制行,然后返回具有拆分列值的行

python - 使用外部 url 时的 Pandas read_csv 响应代码

python - 使用 while 循环将用户输出保存到文件

python - 如果工作表不存在,Pandas 将工作表附加到工作簿,否则覆盖工作表

python - 从返回元组的函数创建新的 pandas 数据框列

python - 轮询文件更改如何工作?

Python:如何将列表写入文件,然后稍后将其拉回内存(dict表示为字符串转换为dict)?

python - 需要帮助使用 lxml 和 xpath 抓取 NHL 统计表