python - 将列值转置为行并根据另一列的值对它们进行分组

标签 python pandas pandas-groupby

我有一个如下所示的数据框:

Value     group_id
23        1
28        1
32        1 
....
35        12
23        12
42        12

总共有 6 个唯一的 group_id,每个都有几百个元素。 我想将其转换为一个数据帧,该数据帧在一行中具有单个“group_id”的。所以我希望我的数据框看起来像这样:

value_1 value_2 value_3 group_id
23       28      32      1
....
35       23      42      12

我尝试使用 pandas.melt 和 pandas.groupby 但未能获得任何结果。

最佳答案

您缺少'Value'在每个组中的位置。我们可以使用groupby.cumcount

创建它
df.set_index(
    ['group_id', df.groupby('group_id').cumcount() + 1]
).Value.unstack().add_prefix('Value_').reset_index()

   group_id  Value_1  Value_2  Value_3
0         1       23       28       32
1        12       35       23       42

关于python - 将列值转置为行并根据另一列的值对它们进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51725616/

相关文章:

python - 按分钟分组索引并计算平均值

python - 使用 resample/timedelta 进行 pandas 在线日志记录

python - 按顺序计算每组 pandas

python - 根据条件从单元格内停止执行 Colab notebook

python - 源代码树 : wide or deep

Python - 多进程池中的 make_archive zip 无法正常工作

python - Pandas 如何转换列的时区

python - 对 "list"列表中的元素求和,每个元素具有不同的索引

python和数据帧: group by week and calculate the sum and difference

python - 带有扭曲 python HTTPS 服务器的反向代理