当前位置: 首页 > 知识库问答 >
问题:

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

李安歌
2023-03-14

我有一个数据框架,其中有一列用于分组和问题答案列:

   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]

最好的方法是什么?

共有2个答案

严瑞
2023-03-14

您也可以使用unstack

# do unstack
df = df.set_index('Group').unstack().reset_index()

# rename columns
df.columns = ['Group','Question','Answer']
乔俊才
2023-03-14
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
 类似资料:
  • 我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。

  • 我有以下数据框: 我想将其转换为: i、 e.我希望保留前4列,但将剩余的每列值分配到单独的行中。有没有一种不使用for循环的方法来实现这一点?

  • 我有一个数据框架,目前看起来是这样的, 数据框架1 我需要创建一个像这样的数据帧。 数据框架2 我需要从数据帧1列的值填充数据帧2的列。图片显示了示例。对此应该有什么算法和过程? 这是示例数据集

  • 问题内容: 我正在寻找一种方法来反向旋转数据框。据我所知,pandas提供了一种pivot或pivot_table方法将EAV df转换为“普通”方法。但是,还有一种方法可以做逆运算吗? 所以给定数据框: 我想将其转换为(EAV模型): 这样做最有效的方法是什么? 问题答案: 假设是索引,将执行以下操作: 如果不是索引,请像这样设置:

  • 我目前拥有以下数据帧: 当前: 我想旋转桌子,得到以下结果: 预期的: 问题: 如何透视数据帧以获得此输出? 我尝试过的事情: 如何在Pandas中透视数据帧?[重复] 重塑和透视表 使DataFrame.pivot索引参数真正成为可选参数 熊猫中的重塑-枢轴、枢轴表、堆栈和取消堆栈用图片解释

  • 问题内容: 我对熊猫有些陌生。我有一个熊猫数据框,它是1行乘23列。 我想将其转换为系列吗?我想知道最pythonic的方法是什么? 我试过了,但是抱怨。它不够聪明,无法意识到它仍然是数学上的“向量”。 谢谢! 问题答案: 它不够聪明,无法意识到它仍然是数学上的“向量”。 可以说它足够聪明,可以识别尺寸差异。:-) 我认为您可以做的最简单的事情是使用位置选择该行,这将为您提供一个Series,其列