如果我只需要对一列应用不同的函数,是不是可以在不列出所有列的情况下应用 agg 函数
Posted
技术标签:
【中文标题】如果我只需要对一列应用不同的函数,是不是可以在不列出所有列的情况下应用 agg 函数【英文标题】:Is it possible to apply an agg function without listing out all the columns if I only need to apply a different function to one column如果我只需要对一列应用不同的函数,是否可以在不列出所有列的情况下应用 agg 函数 【发布时间】:2020-08-28 08:04:37 【问题描述】:给定
df = pd.DataFrame(np.random.rand(4,4), columns=list('abcd'))
df
a b c d
0 0.569586 0.730646 0.070111 0.226699
1 0.092704 0.828220 0.190215 0.644188
2 0.815397 0.281504 0.690391 0.115763
3 0.614022 0.303781 0.738919 0.551983
我知道我们可以使用df.agg('a':'sum','b':'mean','c':'max','d':'min')
跨多个列应用多个函数。
如果我只需要应用一个不同的功能,是否可以在不列出所有列的情况下做到这一点。类似df.agg('a':'sum', //df.columns[1:]// : 'mean')
【问题讨论】:
【参考方案1】:pandas agg 函数也获取列表作为参数。 所以你可以使用类似的东西
params = ['sum'] + len(df.columns[1:]) * ['mean']
df.agg([params])
【讨论】:
【参考方案2】:AFAIK,不,您需要明确的列名作为键。但是,您可以像这样构建字典:
agg_dict = 'a':'sum'
for c in df.columns[1:]: agg_dict[c] = 'mean'
df.groupby('some_columns').agg(agg_dict)
【讨论】:
感谢您提供干净的解决方案!以上是关于如果我只需要对一列应用不同的函数,是不是可以在不列出所有列的情况下应用 agg 函数的主要内容,如果未能解决你的问题,请参考以下文章