我正在努力弄清楚如何为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 …Run Code Online (Sandbox Code Playgroud) 我有一个装饰器,记录装饰功能的名称(以及其他内容).
访问__name__装饰函数的属性是否安全?或者是否有一些可调用的类型没有我尚未遇到的名称?
我试图通过使用不同类型的函数和参数值来减少pandas数据框中的数据.但是,我没有设法更改聚合函数中的默认参数.这是一个例子:
>>> df = pd.DataFrame({'x': [1,np.nan,2,1],
... 'y': ['a','a','b','b']})
>>> df
x y
0 1.0 a
1 NaN a
2 2.0 b
3 1.0 b
Run Code Online (Sandbox Code Playgroud)
这是一个聚合函数,我想测试它的不同值b:
>>> def translate_mean(x, b=10):
... y = [elem + b for elem in x]
... return np.mean(y)
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,我可以使用此函数的默认b值,但我想传递其他值:
>>> df.groupby('y').agg(translate_mean)
x
y
a NaN
b 11.5
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?