小编Fer*_*don的帖子

通过 GroupBy.agg 和命名聚合计算加权平均值

Pandas 0.25 版通过函数aggnamedtuples. 您需要按照文档描述传递列、聚合器对。它还说:

如果您的聚合函数需要额外的参数,请使用 functools.partial() 部分应用它们。

我想应用这个原则来获得加权平均值(除了简单的计数和平均值)。我的输入表是

import pandas as pd

t = pd.DataFrame({'bucket':['a', 'a', 'b', 'b', 'b'], 'weight': [2, 3, 1, 4, 3], 
                  'qty': [100, 500, 200, 800, 700]})
Run Code Online (Sandbox Code Playgroud)

我的查询失败了:

import functools
import numpy as np

t.groupby('bucket').agg(
        NR= ('bucket', 'count'),
        AVG_QTY= ('qty', np.mean),
        W_AVG_QTY= ('qty', functools.partial(np.average, weights='weight'))
   )
Run Code Online (Sandbox Code Playgroud)

带有错误消息:

TypeError: 1D weights expected when shapes of a and weights differ.
Run Code Online (Sandbox Code Playgroud)

我认为问题来自将参数固定为另一列而不是常量?如果没有使用的解决方法apply和返回 a 的 lambda 表达式,我怎样才能使这项工作Series

python group-by pandas functools

5
推荐指数
1
解决办法
2437
查看次数

按列表索引嵌套列表

给定一个嵌套列表,如

>>> m= [[3, 1], [2, 7]]
Run Code Online (Sandbox Code Playgroud)

我可以得到这样的元素

>>> m[1][0]
2
Run Code Online (Sandbox Code Playgroud)

如果索引在列表中给出,即作为 ,我如何获得相同的值[1, 0]

我正在寻找 Q 编程语言提供的带有点的东西,如下面的代码所示

q) m: (3 1; 2 7)
q) m[1][0]
2
q) m . 1 0
2
Run Code Online (Sandbox Code Playgroud)

python indexing nested-lists multidimensional-array

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