如何更改熊猫中数据的形状

问题描述

我在 Pandas DataFrame 中有一些数据。我提供了以下数据示例:

        V1          V2          V3          V4          V5          V6          V7          V8
ID                              
B7393   7.418801    0.805774    0.837428    0.866967    0.773911    0.825854    0.858694    0.763436
C7096   7.418801    0.857844    0.859367    0.861062    0.804877    0.829015    0.852472    0.763436

我想要做的是改变数据在下面的示例中的呈现方式。我该怎么做?我是 Python 新手,还在学习中。

ID
B7393       
    V1  7.418801
    V2  0.805774
    V3  0.837428
    V4  0.866967
    V5  0.773911
    V6  0.825854
    V7  0.858694
    V8  0.763436
C7096       
    V1  7.418801
    V2  0.857844
    V3  0.859367
    V4  0.861062
    V5  0.804877
    V6  0.829015
    V7  0.852472
    V8  0.763436

解决方法

您可以在此处直接使用 pandas.DataFrame.stack

>>> df.stack()
ID       
B7393  V1    7.418801
       V2    0.805774
       V3    0.837428
       V4    0.866967
       V5    0.773911
       V6    0.825854
       V7    0.858694
       V8    0.763436
C7096  V1    7.418801
       V2    0.857844
       V3    0.859367
       V4    0.861062
       V5    0.804877
       V6    0.829015
       V7    0.852472
       V8    0.763436
dtype: float64
,

为什么不使用 Pandas 的 wide_to_long()

pd.wide_to_long(df.reset_index(),stubnames=['V'],i=['index'],j='V_thing')

还是melt()

pd.melt(
    df.reset_index(),id_vars =['index'],value_vars =['V'+str(i) for i in list(range(1,9))]
).set_index('index')