【问题标题】:Pandas dataframe transpose with original row and column values具有原始行和列值的 Pandas 数据帧转置
【发布时间】:2015-08-25 20:13:08
【问题描述】:
有谁知道如何用原始行和列值转置 pandas 数据框?我正在使用 .iterrows() 遍历每一行和每一列,但我确信有更好的方法来做到这一点。也许使用枢轴?谢谢!
DF 看起来像
a b c
0 11 12 13
1 21 22 23
2 31 32 33
我希望新的 DF 是
row col Val
0 0 a 11
1 0 b 12
2 0 c 13
3 1 a 21
4 1 b 22
5 1 c 23
6 2 a 31
7 2 b 32
8 2 c 33
【问题讨论】:
标签:
python
pandas
pivot
transpose
【解决方案1】:
这是使用stack() 的一种方式。
res = df.stack().reset_index()
res.columns = 'row col Val'.split()
res
row col Val
0 0 a 11
1 0 b 12
2 0 c 13
3 1 a 21
4 1 b 22
5 1 c 23
6 2 a 31
7 2 b 32
8 2 c 33
【解决方案2】:
你可以使用pandas.melt:
>>> d
a b c
0 11 12 13
1 21 22 23
2 31 32 33
>>> pandas.melt(d.reset_index(), id_vars='index')
index variable value
0 0 a 11
1 1 a 21
2 2 a 31
3 0 b 12
4 1 b 22
5 2 b 32
6 0 c 13
7 1 c 23
8 2 c 33
那里的值的顺序有点不同,但您可以按您喜欢的任何列对其进行排序,以使事物达到您想要的顺序。
【解决方案3】:
import pandas as pd
df = pd.DataFrame({'A': {0: 11, 1: 21, 2: 31},
'B': {0: 12, 1: 22, 2: 23},
'C': {0: 31, 1: 32, 2: 33}})
pd.melt(df, value_vars=['A','B','C'])
variable value
0 A 11
1 A 21
2 A 31
3 B 12
4 B 22
5 B 23
6 C 31
7 C 32
8 C 33