我们如何在python中的pandas数据帧中将函数应用于整个组?这是我到目前为止的代码:
df_grouped = df.groupby(['key1', 'key2'])
result_with_bla = df_grouped.magic_apply(myfunc)
基本上我想要一个magic_apply函数,它在df_grouped的每个子组而不是每一行上调用myfunc。那存在吗?
答案 0 :(得分:1)
正如@DSM所指出的那样,“魔术应用”简称为...... apply。这是一个groupby方法:
In [11]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B'])
In [12]: g = df.groupby(['A'])
In [13]: def f(x):
print(x)
return len(x)
In [14]: g.apply(f)
A B
0 1 2
1 1 4
A B
0 1 2
1 1 4
A B
2 5 6
Out[14]:
A
1 2
5 1
dtype: int64
注意:令人困惑的是,即使只有两个组,f也会被应用3次 - 这是因为pandas需要确定返回类型。