python判断订单时间节点列数据大小,大于18则日期加1天,有1千多万行数据,处理起来很慢,请教各位大神怎么优化。
def timeadd(n):
if n >= 18:
return df4['订单日期'] + datetime.timedelta(days=1)
else:
df4['订单日期']
df4['订单日期1'] = df4.apply(lambda x: timeadd(x['订单时间节点']),axis = 1)
python判断订单时间节点列数据大小,大于18则日期加1天,有1千多万行数据,处理起来很慢,请教各位大神怎么优化。
def timeadd(n):
if n >= 18:
return df4['订单日期'] + datetime.timedelta(days=1)
else:
df4['订单日期']
df4['订单日期1'] = df4.apply(lambda x: timeadd(x['订单时间节点']),axis = 1)
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答863 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
给你提两点建议,速度应该(必须)可以提上去:
td_day1 = datetime.timedelta(days=1)
,每次使用时用变量td_day1
DataFrame.apply
,这方法本身虽然方便,但速度没有优势,建议直接用np.where
,比如df['订单日期1'] = np.where(df['订单时间节点'] > 18, df['订单日期'] + td_day1, df['订单日期'])