数据框apply()真的比数据帧itertuples()慢吗?

时间:2018-09-30 18:49:25

标签: python pandas

我有一个时间+ OHLC值的数据集。我想计算每一行的范围。我的数据集有400万行。

我有两种方法。

1)df.apply

df['range'] = df[['high', 'low', 'open']].apply (lambda row: (row.high 
- row.low) * (10000 / row.open), axis=1)

2)df.itertuples

def calc_range(df):
   displacement = []
   for row in df.itertuples():
        displacement.append((row.high - row.low) * (10000 / row.open))
   return displacement

df['range'] = calc_range(df)

方法1:55秒

方法2:6秒

我一直认为apply比使用for循环遍历数据帧更快。但是看来我错了。

我想知道两件事- 1)有没有一种方法可以优化此应用代码? 2)对于非常大的数据帧,迭代速度更快吗?

非常感谢

0 个答案:

没有答案