熊猫-如何进行分组,其中新列是(列总和)/(分组的itens数)的结果?

时间:2019-01-12 10:34:14

标签: pandas pandas-groupby sklearn-pandas pandasql

我需要进行某种分组,其中新列(结果)是值列的总和除以找到的项目数?有人可以帮我吗?

例如:

表A

+-------+------+
| item  | value|
+-------+------+
| x     |  100 |
| y     |  200 |
| y     |  400 | 
+-------+------+

正确的结果:

表B

+-------+-----------+
| item  | result    |
+-------+-----------+
| x     | 100/1     |
| y     |(200+400)/2|
+-------+-----------+

代码:

d = {'item': ['x', 'y', 'y'], 'value': [100,200,400]}
df = pd.DataFrame(data=d)
df

1 个答案:

答案 0 :(得分:1)

您可以使用DataFrameGroupBy.agg

s = df.groupby('item')['value'].agg(lambda x: x.sum()/len(x)) 
print (s)
item
x    100
y    300
Name: value, dtype: int64

或将GroupBy.sum除以GroupBy.size

g = df.groupby('item')['value']
s = g.sum() / g.size()
print (s)
item
x    100.0
y    300.0
Name: value, dtype: float64

但是sum/sizemean,因此解决方案应简化为GroupBy.mean

s = df.groupby('item')['value'].mean()
print (s)
item
x    100
y    300
Name: value, dtype: int64