我正在尝试在 pandas 中旋转数据框。在下面的示例中,数据透视表将位于 id 列,值是值列。但是,我想要 (3) 个通用 id 列,因为每种类型通常只有 1-3 个 id,而不是每个 id 都是自己的列(我的真实数据集中有几千个)的普通数据透视表。
我尝试在 pandas 中使用数据透视表和数据透视表函数。我也一直在玩没有聚合的groupby。有更直接的解决方案吗?有一个术语来描述我想要实现的目标吗?
Starting Sample Dataset:
type id value
A 123 11.9
A 234 10.2
A 129 19.3
B 123 11.9
B 189 12.2
B 120 17.8
C 120 17.8
C 139 17.9
D 110 8.5
Desired Output:
type id1 id2 id3
A 11.9 10.2 19.3
B 11.9 12.2 17.8
C 17.8 17.9 Nan
D 8.5 Nan Nan
最佳答案
首先创建虚拟列 ID,然后使用它进行分组
df1['aux'] = df1.groupby('type')['id'].cumcount().reset_index()[0].values
df1.pivot(index='type', columns = 'aux', values = 'value')
输出:
aux 0 1 2
type
A 11.9 10.2 19.3
B 11.9 12.2 17.8
C 17.8 17.9 NaN
D 8.5 NaN NaN
关于python - 根据分组依据中的值数量来透视数据,而不是完整的透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56228484/