【发布时间】:2020-02-20 02:18:28
【问题描述】:
简化,我想使用一个函数来检查一行的条件并相应地设置值:
def helper(row):
if row["A"] == "TEST":
row["B"] = "WOW"
else:
row["C"] = "NO_GO"
moddf = df.apply(helper, axis=1)
我可以使用 iterrows() 来做到这一点,但 .apply 在 df 中迭代超过 1M 行应该更快。
【问题讨论】:
-
只返回该行,尽管
apply在这里可能不是最有效的方式。 -
apply基本上一样慢,当你不可避免地用axis=1调用它时,它仍然是一个循环。您可能想使用np.where,而不是在需要以不同方式设置的少量列上循环,而不是 1M 行。 -
apply是您应该访问的最后资源之一。使用pandas和numpy方法。