我观察到以下示例无法解释的行为。
# here is my pandas version
print("pandas version: {}".format(pd.__version__))
# I create a test DataFrame
d = pd.DataFrame({'data': range(6), 'key': list('ABCABC')})
# I groupby the column 'key'
g = d.groupby('key')
# I filter with always True (not that useful, just for the example)
print(g.filter(lambda x: True))
g.sum()
print(g.filter(lambda x: True))
这是输出
pandas version: 0.20.2
data key
0 0 A
1 1 B
2 2 C
3 3 A
4 4 B
5 5 C
data
0 0
1 1
2 2
3 3
4 4
5 5
我不明白为什么列键在第一次运行过滤器的输出中,而在过滤器之前运行聚合函数(此处为g.sum()
)时,key
列会消失。如果我将as_index=False
用于groupby,则会正确保留该列(如预期的那样)。
看起来聚合函数以某种方式改变了groupby对象,而我对groupby对象的理解是每个函数调用都返回一个新对象(并且不修改原始的groupby对象)。
有人知道这种行为的原因是什么。
最佳, 阿诺