【发布时间】:2015-08-18 04:34:26
【问题描述】:
我注意到,在使用 pandas 0.16.1 的某些情况下,groupby() 上的 apply() 函数不止一次应用于一个或多个输出组。这是复制品:
In [1]:
df2 = DataFrame ({"a" : ["alpha", "alpha", "alpha", "beta","beta","beta","beta","gamma"]})
df2 ["b"] = Series ([i for i in range(0,len(df2))])
df2
Out [1]:
a b
0 alpha 0
1 alpha 1
2 alpha 2
3 beta 3
4 beta 4
5 beta 5
6 beta 6
7 gamma 7
In [2]:
def my_func (df):
print(df.index)
In [3]:
df2.groupby("a").apply(my_func)
Out [3]:
Int64Index([0, 1, 2], dtype='int64')
Int64Index([0, 1, 2], dtype='int64')
Int64Index([3, 4, 5, 6], dtype='int64')
Int64Index([7], dtype='int64')
注意[0,1,2] 索引在输出中出现了两次。这似乎表明该函数已两次应用于alpha 组。
这不是一个大问题,因为这些函数首先是幂等的。但是,如果函数在运行时方面成本很高(想想大回归运行等),它可能会成为一个更大的问题。
我是在错误地使用 API 和/或误解了此输出,还是这里可能存在问题?
【问题讨论】: