我有一个大约42,000,000行和6列的pandas数据帧。索引列是时间戳,并且存在datetime64类型的日期列(“data['settle']
”)。我正在尝试运行以下代码,如果'holiday'列返回“1”,则将该工作日添加到日期。
for i in range(len(data['settle'])-1):
if data['holiday'].iloc[i] == 1:
data['settle'].iloc[i] = data['settle'].iloc[i] + pd.tseries.offsets.BDay(1)
else:
pass
唯一的问题是,这需要很长时间才能返回任何东西(超过30分钟!)而且我在合适的硬件上运行它。我不能通过spark或类似解决方案将其拆分为更多硬件,因为这是一个企业环境。如何让这段代码更快地运行?
我认为可以通过.loc
完成
data.loc[data['holiday']==1,'settle'] += pd.tseries.offsets.BDay(1)