Python 3.x numpy和pandas中的嵌套条件不起作用
我正在尝试生成一个包含两列“日期”和“金额”的数据框。日期从2018年1月到2020年12月,但是,“金额”一栏必须根据以下规则填写: (1) 。如果日期介于“2018/01”和“2019/01”之间,则取起始值1000,对于任何后续行,将之前的值乘以1.06。Python 3.x numpy和pandas中的嵌套条件不起作用,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我正在尝试生成一个包含两列“日期”和“金额”的数据框。日期从2018年1月到2020年12月,但是,“金额”一栏必须根据以下规则填写: (1) 。如果日期介于“2018/01”和“2019/01”之间,则取起始值1000,对于任何后续行,将之前的值乘以1.06。 (2) 。如果日期介于“2019/02”和“2020/01”之间,则取(1.)的最后一个值作为起始值,对于任何后续行,将之前的值乘以1.04。 (3) 。如果日期介于>2020/01之间,则取(2.)的最后一个值作为起始值,对于任何后续
(2) 。如果日期介于“2019/02”和“2020/01”之间,则取(1.)的最后一个值作为起始值,对于任何后续行,将之前的值乘以1.04。
(3) 。如果日期介于>2020/01之间,则取(2.)的最后一个值作为起始值,对于任何后续行,将前一个值乘以1.02。
我的代码如下所示:
df['amount'] =
np.where((df['date']>='2018/01') & (df['date']<='2019/01'),
1000 * (1+g_2018) ** df.index,
np.where( (df['date']>='2019/02') & (df['date']<='2020/01'),
int(df.loc[df['date'] == '2019/01', 'amount'].iloc[0]) * (1+g_2019) ** (df.index-12),
np.where( (df['date']>='2020/02'),
int(df.loc[df['date'] == '2020/01', 'amount'].iloc[0]) * (1+g_2020) ** (df.index-24),
False
)))
我运行了你的代码,没有看到描述的错误。我运行了你的代码,没有看到描述的错误。
date amount
0 2018/01 1000.000000
1 2018/02 1060.000000
2 2018/03 1123.600000
3 2018/04 1191.016000
4 2018/05 1262.476960
5 2018/06 1338.225578
6 2018/07 1418.519112
7 2018/08 1503.630259
8 2018/09 1593.848075
9 2018/10 1689.478959
10 2018/11 1790.847697
11 2018/12 1898.298558
12 2019/01 2012.196472
13 2019/02 0.000000
14 2019/03 0.000000...