我正在讨论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函数如何工作?

提前致谢。

最佳答案

docs


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

关于python - .apply在 Pandas 中如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49403647/

10-12 19:54