熊猫数据框使用列作为行[重复]
Posted
技术标签:
【中文标题】熊猫数据框使用列作为行[重复]【英文标题】:Pandas dataframe use columns as rows [duplicate] 【发布时间】:2019-05-07 09:29:45 【问题描述】:我有一个数据框,其中包含一组列和问题答案列:
Group Q1 Q2 Q3 Q4
0 1 A B C 6
1 1 B C A A
2 1 E F V A
3 2 R T Y O
4 2 M Z D F
我想将问题的列移动/融化/折叠到行,因此所需的数据框将如下所示:
Group Question Answer
0 1 Q1 A
1 1 Q1 B
2 1 Q1 R
3 1 Q2 B
4 1 Q2 C
5 1 Q2 F
.. .. 以此类推,直到最后一行:
[2 Q4 F]
最好的方法是什么?
【问题讨论】:
【参考方案1】:melt
df.melt('Group', var_name='Question', value_name='Answer')
Group Question Answer
0 1 Q1 A
1 1 Q1 B
2 1 Q1 E
3 2 Q1 R
4 2 Q1 M
5 1 Q2 B
6 1 Q2 C
7 1 Q2 F
8 2 Q2 T
9 2 Q2 Z
10 1 Q3 C
11 1 Q3 A
12 1 Q3 V
13 2 Q3 Y
14 2 Q3 D
15 1 Q4 6
16 1 Q4 A
17 1 Q4 A
18 2 Q4 O
19 2 Q4 F
理解
pd.DataFrame([
(g, q, a)
for g, *A in zip(*map(df.get, df))
for q, a in zip([*df][1:], A)
], columns=['Group', 'Question', 'Answer'])
Group Question Answer
0 1 Q1 A
1 1 Q2 B
2 1 Q3 C
3 1 Q4 6
4 1 Q1 B
5 1 Q2 C
6 1 Q3 A
7 1 Q4 A
8 1 Q1 E
9 1 Q2 F
10 1 Q3 V
11 1 Q4 A
12 2 Q1 R
13 2 Q2 T
14 2 Q3 Y
15 2 Q4 O
16 2 Q1 M
17 2 Q2 Z
18 2 Q3 D
19 2 Q4 F
【讨论】:
【参考方案2】:你也可以使用unstack
# do unstack
df = df.set_index('Group').unstack().reset_index()
# rename columns
df.columns = ['Group','Question','Answer']
【讨论】:
以上是关于熊猫数据框使用列作为行[重复]的主要内容,如果未能解决你的问题,请参考以下文章