熊猫数据框使用列作为行[重复]

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']

【讨论】:

以上是关于熊猫数据框使用列作为行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何根据条件表达式从熊猫数据框中删除行[重复]

如何根据条件表达式从熊猫数据框中删除行[重复]

在熊猫数据框中创建重复列

在熊猫数据框中选择行[重复]

输出熊猫数据框中所有列的数据[重复]