Python pandas:如果我们之前运行聚合函数,groupby过滤器输出会有所不同

时间:2017-07-26 16:08:53

标签: python pandas pandas-groupby

我观察到以下示例无法解释的行为。

# 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对象)。

有人知道这种行为的原因是什么。

最佳, 阿诺

0 个答案:

没有答案