我正在经历this问题,其中Ted Petrou解释了.transform和.apply之间的区别
这是使用的DataFrame
df = pd.DataFrame({'State':['Texas', 'Texas', 'Florida', 'Florida'],
'a':[4,5,1,3], 'b':[6,10,3,11]})
State a b
0 Texas 4 6
1 Texas 5 10
2 Florida 1 3
3 Florida 3 11
定义了功能检查
def inspect(x):
print(x)
当我使用apply调用inspect函数时,我得到3个数据帧而不是2个
df.groupby('State').apply(lambda x:inspect(x))
State a b
2 Florida 1 3
3 Florida 3 11
State a b
2 Florida 1 3
3 Florida 3 11
State a b
0 Texas 4 6
1 Texas 5 10
为什么我会在打印时获得3个数据帧而不是2个?我真的想知道apply函数是如何工作的吗?
提前致谢。
答案 0 :(得分:2)
来自docs:
在当前实现中,在第一列/行上应用调用func两次,以确定它是否可以采用快速或慢速代码路径。如果func有副作用,这可能会导致意外行为,因为它们会对第一列/行生效两次。