问题描述
我在 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')