Python 如何一次计算大熊猫的平均数和性病?

Python 如何一次计算大熊猫的平均数和性病?,python,pandas,Python,Pandas,例如,我们有如下数据: >>> df name score times 0 tom 100 1 1 tom 99 2 2 tom 100 3 3 jack 99 1 4 jack 99 2 5 tony 100 1 6 tony 100 2 7 tony 100 3 我想得到这样的结果 name

例如,我们有如下数据:

>>> df
   name  score  times
0   tom    100      1
1   tom     99      2
2   tom    100      3
3  jack     99      1
4  jack     99      2
5  tony    100      1
6  tony    100      2
7  tony    100      3
我想得到这样的结果

   name       score std
0  jack   99.000000  0
1   tom   99.666667  0.57
2  tony  100.000000  0
有可能马上得到结果吗? 现在我必须分别计算它们,并使用
agg

In [274]: df.groupby('name').agg({'score': ['mean', 'std']})
Out[274]:
           score
            mean      std
name
jack   99.000000  0.00000
tom    99.666667  0.57735
tony  100.000000  0.00000

您可以将
agg
函数应用于计算
mean

df = df.groupby('name').agg({'score': ['mean', 'std']})
然后您将获得多索引数据帧,以提取级别并执行以下操作

df = df.xs('score', axis=1, drop_level=True)
    # 'score' : key on which to get cross section
    # axis=1 : get cross section of column
    # drop_level=True : returns cross section without the multilevel index
在给定输出时,请执行以下操作:

df = df.reset_index('name')
然后重新命名

df.rename(columns={"mean":"score"}, inplace=True)
输出:

   name       score      std
0  jack   99.000000  0.00000
1   tom   99.666667  0.57735
2  tony  100.000000  0.00000

为了准确地得到您所需要的,您可以先按名称分组,计算得分的平均值和标准差,然后重命名和重新索引

(
     df.groupby('name').score.agg(['mean','std'])
       .rename(columns={'mean':'score'}).reset_index()
)
Out[204]: 
   name       score      std
0  jack   99.000000  0.00000
1   tom   99.666667  0.57735
2  tony  100.000000  0.00000

很高兴你能帮忙!如果我的回答有帮助,别忘了接受它。谢谢