.apply如何在熊猫中运作?

时间:2018-03-21 10:19:00

标签: python pandas apply

我正在经历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函数是如何工作的吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

来自docs

  

在当前实现中,在第一列/行上应用调用func两次,以确定它是否可以采用快速或慢速代码路径。如果func有副作用,这可能会导致意外行为,因为它们会对第一列/行生效两次。