这样做很明显
data.groupby(['A','B']).mean()
Run Code Online (Sandbox Code Playgroud)
我们得到了一个多级索引,一级是"A"和"B",一列是每组的平均值
我怎么能同时拥有count(),std()?
所以结果在数据框中看起来像
A B mean count std
Run Code Online (Sandbox Code Playgroud)
以下应该有效:
data.groupby(['A','B']).agg([pd.Series.mean, pd.Series.std, pd.Series.count])
Run Code Online (Sandbox Code Playgroud)
基本上,调用agg
并传递函数列表将生成应用这些函数的多个列。
例子:
In [12]:
df = pd.DataFrame({'a':np.random.randn(5), 'b':[0,0,1,1,2]})
df.groupby(['b']).agg([pd.Series.mean, pd.Series.std, pd.Series.count])
Out[12]:
a
mean std count
b
0 -0.769198 0.158049 2
1 0.247708 0.743606 2
2 -0.312705 NaN 1
Run Code Online (Sandbox Code Playgroud)
您还可以传递方法名称的字符串,常见的方法可以工作,一些比较晦涩的方法我不记得了,但在这种情况下它们工作得很好,感谢@ajcr的建议:
In [16]:
df = pd.DataFrame({'a':np.random.randn(5), 'b':[0,0,1,1,2]})
df.groupby(['b']).agg(['mean', 'std', 'count'])
Out[16]:
a
mean std count
b
0 -1.037301 0.790498 2
1 -0.495549 0.748858 2
2 -0.644818 NaN 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
573 次 |
最近记录: |