相关疑难解决方法(0)

Pandas groupby结果为多列

我有一个数据帧,我正在寻找组,然后将组内的值分成多个列.

例如:说我有以下数据帧:

>>> import pandas as pd
>>> import numpy as np
>>> df=pd.DataFrame()
>>> df['Group']=['A','C','B','A','C','C']
>>> df['ID']=[1,2,3,4,5,6]
>>> df['Value']=np.random.randint(1,100,6)
>>> df
  Group  ID  Value
0     A   1     66
1     C   2      2
2     B   3     98
3     A   4     90
4     C   5     85
5     C   6     38
>>> 
Run Code Online (Sandbox Code Playgroud)

我想通过"组"字段进行分组,获取"值"字段的总和,并获取新字段,每个字段都包含组的ID值.

目前我能够做到如下,但我正在寻找一种更清洁的方法:

首先,我创建一个数据框,其中包含每个组中的ID列表.

>>> g=df.groupby('Group')
>>> result=g.agg({'Value':np.sum, 'ID':lambda x:x.tolist()})
>>> result
              ID  Value
Group                  
A         [1, 4]     98
B            [3]     76
C      [2, 5, 6]    204
>>> 
Run Code Online (Sandbox Code Playgroud)

然后我使用pd.Series将它们分成列,重命名,然后再加入.

>>> id_df=result.ID.apply(lambda …
Run Code Online (Sandbox Code Playgroud)

python pandas

7
推荐指数
1
解决办法
4954
查看次数

标签 统计

pandas ×1

python ×1