我有一个时间+ 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)对于非常大的数据帧,迭代速度更快吗?
非常感谢