这是一个自我回答的QnA,旨在指导用户应用的缺陷和好处.
我已经看到很多关于Stack Overflow问题的答案涉及使用apply.我也看到用户评论他们说" apply很慢",应该避免".
我已经阅读了很多关于性能主题的文章,解释apply很慢.我还在文档中看到了一个关于如何apply简单地传递UDF的便利函数的免责声明(现在似乎无法找到).因此,普遍的共识是,apply如果可能,应该避免.但是,这引发了以下问题:
apply是如此糟糕,那为什么它在API中呢?apply- 免费?apply是不错的(比其他可能的解决方案更好)?我需要在Pandas数据框中按行计算1到5的整数。例如,对于
import pandas as pd
df = pd.DataFrame({'c1': [3, 1, 2], 'c2': [3, 3, 3], 'c3': [2, 5, None], 'c4': [1, 2, 3]})
c1 c2 c3 c4
0 3 3 2.0 1
1 1 3 5.0 2
2 2 3 NaN 3
Run Code Online (Sandbox Code Playgroud)
将创建以下内容:
n1 n2 n3 n4 n5
0 1 1 2 0 0
1 1 1 1 0 1
2 0 1 2 0 0
Run Code Online (Sandbox Code Playgroud)
我遇到过.value_counts和crosstab,但是我只是无法设置其中之一来获取我需要的东西。任何帮助将非常感激。
提前致谢!