如果我有一个函数:
def do_irreversible_thing(a, b):
print a, b
同时,一个数据框,比如说
df = pd.DataFrame([(0, 1), (2, 3), (4, 5)], columns=['a', 'b'])
如何最好地在pandas数据框的每一行上仅运行一次函数?正如其他问题所指出的那样,像df.apply pandas这样的方法会导致第一行的函数被调用两次。在其他问题中,甚至使用numpy也是如此。
np.vectorize(do_irreversible_thing)(df.a, df.b)
如果使用df.apply()
或者df.T.apply()
,将在第一行时导致函数被调用两次。
有没有更快更简洁的方式调用该函数来处理每一行?
for idx, a, b in df.itertuples():
do_irreversible_thing(a, b)
for
循环的工作。通常没有一种好的方法可以向量化副作用。 - user2357112zip(df.a, df.b)
或df.itertuples()
来获得更好的性能,详见此答案。 - root