37,978
社区成员
手头有一些时间索引数据,时间是2000-09-01到2023-09-01,现在想把其中一列的数据 “销售额”,在2022-09-01之前的数据乘以系数0.5,在2022-09-01之后的数据乘以系数0.6,最后两个部分的数据显示在新的列“调整后的销售额”里面。
我现在用切片工具进行操作,总是有错误提示,ValueError: Boolean array expected for the condition, not object。
dat['调整后的销售额'] = dat.loc['2020-09-01':'2022-09-01', ['销售额']] * 0.5
dat['调整后的销售额'] = dat.loc['2022-09-02 ':'2023-09-01', ['销售额']] * 0.6
并且,我估计就算不提示错误,新的列也会出错,可能会覆盖,数据显示不是我要求的,请大家写个代码,帮忙解决一下,谢谢。
刚写了一个条件语句,还是出问题,就是elif条件的结果总是覆盖掉前面if条件的结果,最后'调整后的销售额'的结果都是*0.6的,代码如下:
a = datetime.datetime(2022, 9, 1)
for i in dat.index:
for j in dat['销售额']:
if i <= a:
dat['调整后的销售额'] = j * 0.5
elif i > a:
dat['调整后的销售额'] = .j * 0.6
大家给指点指点,到底那里错了,elif后面换成dat['调整后的销售额'].append(j * 0.6),还是不对。