相关疑难解决方法(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万
查看次数

使用 pandas 中的分组 .agg 计算加权平均值

我想使用pandas.agg()中的函数按组计算数据集中一列的平均值和另一列的加权平均值。我知道一些解决方案,但它们都不是很简洁。

此处发布了一个解决方案(pandas and groupby: how tocalculate Weighted Averages inside an agg,但它看起来仍然不是很灵活,因为权重列是硬编码在 lambda 函数定义中的。我正在寻找创建一种语法更接近这个:

(
df
.groupby(['group'])
.agg(avg_x=('x', 'mean'),
     wt_avg_y=('y', 'weighted_mean', weights='weight')
)
Run Code Online (Sandbox Code Playgroud)

这是一个完整的示例,其中的代码似乎不必要地复杂:

import pandas as pd
import numpy as np

# sample dataset
df = pd.DataFrame({
    'group': ['a', 'a', 'b', 'b'],
    'x': [1, 2, 3, 4],
    'y': [5, 6, 7, 8],
    'weights': [0.75, 0.25, 0.75, 0.25]
})
df
#>>>    group   x   y   weights
#>>> 0      a   1   5   0.75
#>>> 1      a   2   6 …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas pandas-groupby

4
推荐指数
1
解决办法
7373
查看次数

标签 统计

pandas ×2

pandas-groupby ×1

python ×1

python-3.x ×1