【发布时间】:2023-03-03 08:51:25
【问题描述】:
我有以下数据框,我正在尝试计算一个指标:
Date saldo
0 2018-01-02 94.0
1 2018-01-03 92.0
2 2018-01-04 90.0
3 2018-01-06 86.0
4 2018-01-07 84.0
5 2018-01-08 82.0
6 2018-01-09 80.0
7 2018-01-11 76.0
8 2018-01-12 72.0
9 2018-01-13 70.0
我使用 iterrows 方法,它工作正常,返回了预期的输出。
data = 0
n = 0
c= 0
V=0
recompra = 35
qtd = 40
leadtime = 10
Data = []
Valor = []
for index, row in dk.iterrows():
if (row['saldo'] + c) < recompra:
data += 1
V = row['saldo'] + c
if data == leadtime:
n += 1
c = qtd * n
data = 0
else:
V = row['saldo'] + c
df = pd.DataFrame(list(zip(Data, Valor)), columns=['Data', 'Valor'])
当我尝试使用 apply() 应用相同的方法时,它起作用了,但是,它从 'saldo' 列返回相同的输出。
def optimize(row):
data = 0
n = 0
c= 0
recompra = 35
qtd = 40
leadtime = 10
if (row['saldo'] + c) < recompra:
data += 1
return row['saldo'] + c
if data == leadtime:
n += 1
c = (qtd) * n
data = 0
else:
return row['saldo'] + c
df['Simular'] = df.apply(optimize, axis=1)
我从第二种方法中得到的是同一列的副本:
Date saldo Simulado
0 2018-01-02 94.0 94.0
1 2018-01-03 92.0 92.0
2 2018-01-04 90.0 90.0
3 2018-01-06 86.0 86.0
4 2018-01-07 84.0 84.0
5 2018-01-08 82.0 82.0
6 2018-01-09 80.0 80.0
7 2018-01-11 76.0 76.0
8 2018-01-12 72.0 72.0
9 2018-01-13 70.0 70.0
【问题讨论】:
-
recompra在哪里定义?你能分享一个示例输出吗?请查看minimal reproducible example -
leadtime也没有定义