首页 > 解决方案 > 熊猫可以进行这种转变吗?

问题描述

所以我有一个包含列的数据框:

| 面积 | 项目 | 单位 | 2000年 | 2001年 | 2002年 |

这里的复合键是区域和项目。在这种情况下,项目是该区域正在测量的内容。单位是被测量的单位。以下是每年的值。

我想这样做,所以表格的结构如下:

| 面积 | 项目 | 单位 | 年份 | 价值 |

所以现在每年都有一行,值列包含该地区项目中那一年的内容

例子:

安提瓜和巴布达 | 平均膳食能量供应充足| % | 钠 | 90 | 80 |

安提瓜和巴布达 | 平均膳食能量供应充足| % | 2000 | 钠 |

安提瓜和巴布达 | 平均膳食能量供应充足| % | 2001 | 90 |

安提瓜和巴布达 | 平均膳食能量供应充足| % | 2002 | 80 |

我对熊猫很陌生,并试图让它与枢轴一起使用,但无法提出任何有用的东西。我可以使用 for 循环手动执行此操作,但我想我会问一些更有经验的 pandas 用户他们的想法。

标签: pythonpandasdataframe

解决方案


尝试.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

推荐阅读