大熊猫聚集在所有列上

时间:2018-07-10 14:45:44

标签: python pandas

Python 3和pandas 0.23

我有一个包含2000列的DataFrame,并且需要基于每列的一些摘要统计信息进行一些变量消除。

测试数据:

data = pd.DataFrame({
    'a': np.random.normal(0, 2, 10), \
    'b': np.random.normal(0, 2, 10), \
    'c': np.random.normal(0, 2, 10) \
    })

作品:

data.aggregate(['min','max', 'nunique']).transpose()

有效,但是如何命名lambda列?

data.aggregate(['min','max', 'nunique', (lambda x: np.unique(x).size / x.size)]).transpose()

显然,您应该能够对聚合函数给出命令,但是我不能让它起作用,除了列出所有要计算统计信息的列(即2000列)。

在原始data DataFrame中,我不会以最小,最大值,nunqiue的每一列为一行的格式,而在每一列中以一行的格式都不会得到结果的DataFrame

1 个答案:

答案 0 :(得分:2)

您可以在聚合之后仅rename <lambda>列,但是如果您有多个lambda函数,那么它们都具有相同的名称,这就是一个问题。相反,只需使用所需名称定义函数,然后在agg中调用它们即可。

import numpy as np

def named_f1(x):
    return np.unique(x).size / x.size

data.aggregate(['min','max', 'nunique', named_f1]).T

输出:

        min       max  nunique  named_f1
a -4.152149  4.095229     10.0       1.0
b -3.436940  3.266958     10.0       1.0
c -1.703651  3.198662     10.0       1.0