我有一个列为MultiIndex的DataFrame。我想按照一级列进行分组,并使用apply执行转换。
目标:我希望通过使用apply传递给函数的DataFrame在索引中不包含groupby的键。
从docs看来,这就是
希望输出的打印结果为:如果我使用
目标:我希望通过使用apply传递给函数的DataFrame在索引中不包含groupby的键。
从docs看来,这就是
group_keys
所做的事情,但它似乎没有效果:import numpy as np
import pandas as pd
data = {'A': pd.DataFrame(np.random.randn(100, 5)),
'B': pd.DataFrame(np.random.randn(100, 5)),
'C': pd.DataFrame(np.random.randn(100, 5))}
data = pd.concat(data, axis=1, names=['feat_1', 'feat_2'])
def foo(df):
print(df.columns)
return df.sum(1)
我的尝试:
result = data.groupby(level=['feat_1'], axis=1, group_keys=False).apply(foo)
这是在屏幕上打印的内容:
MultiIndex(levels=[['A', 'B', 'C'], [0, 1, 2, 3, 4]],
labels=[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4]],
names=['feat_1', 'feat_2'])
MultiIndex(levels=[['A', 'B', 'C'], [0, 1, 2, 3, 4]],
labels=[[1, 1, 1, 1, 1], [0, 1, 2, 3, 4]],
names=['feat_1', 'feat_2'])
MultiIndex(levels=[['A', 'B', 'C'], [0, 1, 2, 3, 4]],
labels=[[2, 2, 2, 2, 2], [0, 1, 2, 3, 4]],
names=['feat_1', 'feat_2'])
希望输出的打印结果为:如果我使用
group_keys=False
,那么我希望函数foo
接收到仅包含feat_2
列的数据框。[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
我是否错过了文档中的某些内容?或者我如何实现我想要的(可能不需要修改函数foo)?
注意:我正在使用Python 3上的pandas 0.20.3。