python - 根据分组依据中的值数量来透视数据,而不是完整的透视

标签 python pandas pivot

我正在尝试在 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/

相关文章:

python - 计算复杂 numpy ndarray 的 abs()**2 的最节省内存的方法

python - 如何从 pandas 的列中删除列表中的字符串

python - pandas如何识别具有特定模式的字符串

python - Pandas DataFrame 的异常 reshape

python - 使用计数器将 Python for 循环转换为 while 循环

python - 用于打印数字除数乘积的高效 python 代码

python - 无法让自定义 MySQLOperator 在 Airflow 中工作 : extra_dejson error with hook

python - 在字符定界符上将字符串(对象)拆分为两列,但保留字符定界符

python - SQLAlchemy 中的数据透视表

r - 如何使用正则表达式 pivot_longer 两组列