python中的手动聚合

时间:2014-08-12 14:21:04

标签: python aggregate data-analysis

我有一个像

这样的元组列表
[
    (A,B,C,D,E,..., value),
    ...
]

其中A, B, C...是整数或短字符串。列表中每个元组的大小相同(~10个字段)

列表有大约50000个元组。

在UI中,用户可以为每个A, B, C...字段指定一个值,或者将该字段留空,这意味着它可以具有任何值。

输出应包含列表中所有匹配的元组以及value的汇总(总和或平均值)

实现这一目标的最快和最快速的方法是什么?

(列表是通过ORM从数据库中读取的,但是有很多应用内计算,因此A,B,C...字段不会直接映射到数据库列)

或者我应该重新组织清单吗?

1 个答案:

答案 0 :(得分:0)

这是一种方法。我不知道它是最快的(它真的重要吗?)还是最Pythonic(不确定这个词的含义),但我确实喜欢一般的策略,即定义一个知道如何的函数或lambda评估每个数据项,如果应该保留,则返回true。

data = [
    (1, 2, 3),
    ('a', 2, 3),
    (1, 'c', 4),
    (1, 'd', 4),
]

criteria = (1, None, 4)

f    = lambda tup: all(t == c or c is None for t, c in zip(tup, criteria))
keep = filter(f, data)