相关疑难解决方法(0)

Pandas DataFrame使用多列聚合函数

有没有办法编写DataFrame.agg方法中使用的聚合函数,可以访问聚合的多个数据列?典型的用例是加权平均加权标准偏差函数.

我希望能够写出类似的东西

def wAvg(c, w):
    return ((c * w).sum() / w.sum())

df = DataFrame(....) # df has columns c and w, i want weighted average
                     # of c using w as weight.
df.aggregate ({"c": wAvg}) # and somehow tell it to use w column as weights ...
Run Code Online (Sandbox Code Playgroud)

python pandas

63
推荐指数
5
解决办法
3万
查看次数

GroupBy在Python Pandas中起作用,如SUM(col_1*col_2),加权平均等

是否可以直接计算两列的乘积(或例如总和)而不使用

grouped.apply(lambda x: (x.a*x.b).sum()
Run Code Online (Sandbox Code Playgroud)

它的使用速度更快(在我的机器上不到一半的时间)

df['helper'] = df.a*df.b
grouped= df.groupby(something)
grouped['helper'].sum()
df.drop('helper', axis=1)
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢这样做.例如,计算每组的加权平均值是有用的.lambda方法就是这样

grouped.apply(lambda x: (x.a*x.b).sum()/(df.b).sum())
Run Code Online (Sandbox Code Playgroud)

并且再次比将助手除以b.sum()慢得多.

python pandas

9
推荐指数
1
解决办法
4844
查看次数

标签 统计

pandas ×2

python ×2