python - 如何删除第一级索引,然后将剩余的索引值与 pd DataFrame 的自定义逻辑合并?
问题描述
假设我有一个像这样的 MultiIndex DataFrame:
price volume
year product city
2010 A LA 10 7
B SF 7 9
C NY 7 6
LA 18 21
SF 4 8
2011 A LA 13 5
B SF 2 4
C NY 9 3
SF 2 0
我想做一个有点复杂的合并,其中删除 DataFrame 索引(年份)的第一级,并根据一些自定义逻辑合并 DataFrame 中现在第一级索引(产品)中的重复项。在这种情况下,我希望能够将 price 列设置为使用 2010 外部索引中的值,将 volume 列设置为使用 2011 外部索引中的值,但我想要一个可以应用于更多的通用解决方案列应该存在。
最终的 DataFrame 看起来像这样,其中价格值来自 2010 年指数,成交量值来自 2011 年指数,缺失值用 NaN 填充。
price volume
product city
A LA 10 5
B SF 7 4
C NY 7 3
LA 18 NaN
SF 4 0
解决方案
您可以按第一级选择,DataFrame.xs
然后concat
:
df = pd.concat([df.xs(2010)['price'], df.xs(2011)['volume']], axis=1)
也可以使用loc
:
df = pd.concat([df.loc[2010, 'price'], df.loc[2011, 'volume']], axis=1)
print (df)
price volume
product city
A LA 10 5.0
B SF 7 4.0
C LA 18 NaN
NY 7 3.0
SF 4 0.0
推荐阅读
- ios - 由于 LLVM 仪器符号或代码覆盖,Apple 拒绝构建,但找不到
- html - 使用引导程序显示更多和更少的选项
- forms - 使用 Django REST 框架时如何克服 FormData 限制?
- c# - 强制 Kerberos 或 NTLM 登录到 Active Directory 域
- c# - 如何避免在我的数据库中出现重复数据?
- html - Angular2自定义工具提示图标点击
- node.js - 将中间件添加到单个路由 Js Express 的最简洁方法
- tensorflow.js - 分类器输出错误
- variables - Fortran 中的变量识别问题
- python - 在 Django 中间件中获取表单数据