我正在努力弄清楚如何为pandas的dataframe.agg()功能组合两种不同的语法.拿这个简单的数据框:
df = pd.DataFrame({'A': ['group1', 'group1', 'group2', 'group2', 'group3', 'group3'],
'B': [10, 12, 10, 25, 10, 12],
'C': [100, 102, 100, 250, 100, 102]})
>>> df
[output]
A B C
0 group1 10 100
1 group1 12 102
2 group2 10 100
3 group2 25 250
4 group3 10 100
5 group3 12 102
Run Code Online (Sandbox Code Playgroud)
我知道你可以发送两个函数agg()并获得一个新的数据框,其中每个函数都应用于每一列:
df.groupby('A').agg([np.mean, np.std])
[output]
B C
mean std mean std
A
group1 11.0 1.414214 101 1.414214
group2 17.5 10.606602 175 106.066017
group3 11.0 1.414214 101 1.414214
Run Code Online (Sandbox Code Playgroud)
我知道你可以将参数传递给一个函数:
df.groupby('A').agg(np.std, ddof=0)
[output]
B C
A
group1 1.0 1
group2 7.5 75
group3 1.0 1
Run Code Online (Sandbox Code Playgroud)
但有没有办法传递多个函数以及它们中的一个或两个的参数?我希望df.groupby('A').agg([np.mean, (np.std, ddof=0)])在文档中找到类似的东西,但到目前为止还没有运气.有任何想法吗?
Kor*_*rem 15
好吧,关于聚合的文档实际上有点缺乏.可能有一种方法可以通过正确传递参数来处理这个问题,你可以查看pandas的源代码(也许我会稍后).
但是,你可以很容易地做到:
df.groupby('A').agg([np.mean, lambda x: np.std(x, ddof=0)])
Run Code Online (Sandbox Code Playgroud)
它也会起作用.
| 归档时间: |
|
| 查看次数: |
3209 次 |
| 最近记录: |