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
答案 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