python - 熊猫可以进行这种转变吗?
问题描述
所以我有一个包含列的数据框:
| 面积 | 项目 | 单位 | 2000年 | 2001年 | 2002年 |
这里的复合键是区域和项目。在这种情况下,项目是该区域正在测量的内容。单位是被测量的单位。以下是每年的值。
我想这样做,所以表格的结构如下:
| 面积 | 项目 | 单位 | 年份 | 价值 |
所以现在每年都有一行,值列包含该地区项目中那一年的内容
例子:
- 想转:
安提瓜和巴布达 | 平均膳食能量供应充足| % | 钠 | 90 | 80 |
- 进入:
安提瓜和巴布达 | 平均膳食能量供应充足| % | 2000 | 钠 |
安提瓜和巴布达 | 平均膳食能量供应充足| % | 2001 | 90 |
安提瓜和巴布达 | 平均膳食能量供应充足| % | 2002 | 80 |
我对熊猫很陌生,并试图让它与枢轴一起使用,但无法提出任何有用的东西。我可以使用 for 循环手动执行此操作,但我想我会问一些更有经验的 pandas 用户他们的想法。
解决方案
尝试.melt
:
out = df.melt(id_vars=["Area", "Item", "Unit"], var_name="Year")
out.Year = out.Year.str.strip("Y").astype(int)
print(out)
印刷:
Area Item Unit Year value
0 Antigua and Barbuda Average dietary energy supply adequacy % 2000 NaN
1 Antigua and Barbuda Average dietary energy supply adequacy % 2001 90.0
2 Antigua and Barbuda Average dietary energy supply adequacy % 2002 80.0
推荐阅读
- debugging - gdb - 如何反汇编整个函数,包括循环
- android - 有没有办法为子显示(演示类)显示两个模拟器?
- php - 使用 Symfony / Doctrine 的 OneToMany 关系
- mysql - 撤销删除权限(没有为用户定义这样的授权)
- javascript - 如何正确应用 Javascript?
- node.js - 处理跨多个 Pod 的服务器发送事件
- javascript - 将对象推送到 vue 中的空数组
- javascript - gojs图中graphObject的固定大小
- python - Pycharm 调试器,不够深入:Django 项目。[对 python/Django 相当陌生]
- python - Python:在python中使用executemany()批量上传Oracle表的记录