In the current implementation apply calls func twice on the first column/row to decide whether it can take a fast or slow code path. This can lead to unexpected behavior if func has side-effects, as they will take effect twice for the first column/row.
In my opinion apply()
should have an option to disable this check. Sometimes for functions with side effects, consistent behaviour is more important that speed.
Comment From: TomAugspurger
Are you able to use .pipe
rather than apply for your use-case?
Comment From: jreback
this is a dupe of #2936
this can simply be fixed. To compute starting at the next row.