计算组平均值并使用Pandas groupby将其分配给子组

时间:2015-05-07 22:47:32

标签: pandas

我有一个DataFrame与每个城市的人口。我想用这个州内每个城市的人口计算每个州的平均人口。

以下是数据样本:

item

我可以通过以下方式检索平均值:

State     City         Population     State Ave
CA        San Diego    10000          ??
CA        Palo Alto    8000           ??
CA        Marin        5000           ??
SC        Columbia     4000           ??
SC        Charleston   3000           ??
SC        Greenville   4000           ??

但是如何为每个城市分配州平均值?

注意:我试图用这个较小的例子和上面的数据简化一个大问题,这显然不是真的。

2 个答案:

答案 0 :(得分:2)

您可以使用transform并将结果放在df['Avg']

In [216]: df['Avg'] = df.groupby('State')['Population'].transform('mean')

In [217]: df
Out[217]:
  State        City  Population          Avg
0    CA    SanDiego       10000  7666.666667
1    CA    PaloAlto        8000  7666.666667
2    CA       Marin        5000  7666.666667
3    SC    Columbia        4000  3666.666667
4    SC  Charleston        3000  3666.666667
5    SC  Greenville        4000  3666.666667

答案 1 :(得分:1)

mean = df.groupby(' State')[' Population']。mean()

df ['表示'] = df.name.apply(mean.get_value)