【问题标题】:Is this transformation possible with pandas?熊猫可以进行这种转变吗?
【发布时间】:2021-06-16 22:48:40
【问题描述】:

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

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

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

我想让表格的结构如下:

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

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

示例:

  • 想转:

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

  • 进入:

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

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

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

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

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

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

    【讨论】:

    • 这样就行了!感谢您的帮助,我永远不会自己找到这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2017-01-15
    相关资源
    最近更新 更多