首页 > 解决方案 > 如何重塑数据框以便在 python 中获得所需的输出?

问题描述

我有一个这种格式的数据框。

我有这个数据框:

   id    2005-01-07   2008-01-07    ...
0  1Y           1.0          1.6
1  5Y           1.0          1.7
2  6Y           6.0          1.0
3  10Y          2.0          7.1
4  30Y          5.5          8.6

我想将其转换为:

   id           Date     number
0  1Y     2005-01-07        1.0
1  1Y     2008-01-07        1.6
2  5Y     2005-01-07        1.0
3  5Y     2008-01-07        1.7
4  6Y     2005-01-07        6.0
5  6Y     2008-01-07        1.0
6  10Y    2005-01-07        2.0
7  10Y    2008-01-07        7.1
8  30Y    2005-01-07        5.5
9  30Y    2008-01-07        8.6
...

是否可以在 python 中实现此输出?我尝试使用transpose()replace 无法达到所需的输出

@mechanical_meat 的回答:

df = pd.melt(df, id_vars=['id'], var_name='Date', value_name='number')

标签: pythonpandas

解决方案


使用pd.melt我们可以通过一个简单的步骤从宽格式变为长格式:

df = pd.melt(df, id_vars=['id'], var_name='Date', value_name='number')

在这里特别有用的原因.melt()是您正在取消旋转而不是旋转

  • 换句话说,未在id_vars关键字参数中标识的剩余列然后被取消透视到行中。

如果您需要返回原始格式,则可以使用.pivot()

df.pivot(values='number',index='id',columns='Date')

推荐阅读