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
很高兴你能帮忙!如果我的回答有帮助,别忘了接受它。谢谢