2

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

例如:

表 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
4

1 回答 1

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.sumGroupBy.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
于 2019-01-12T10:42:44.833 回答