我需要进行某种分组,其中新列(结果)是值列的总和除以找到的项目数?有人可以帮我吗?
例如:
表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
答案 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
g = df.groupby('item')['value']
s = g.sum() / g.size()
print (s)
item
x 100.0
y 300.0
Name: value, dtype: float64
但是sum/size
是mean
,因此解决方案应简化为GroupBy.mean
:
s = df.groupby('item')['value'].mean()
print (s)
item
x 100
y 300
Name: value, dtype: int64