我正在讨论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/