Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x numpy和pandas中的嵌套条件不起作用_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python 3.x numpy和pandas中的嵌套条件不起作用

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.)的最后一个值作为起始值,对于任何后续

我正在尝试生成一个包含两列“日期”和“金额”的数据框。日期从2018年1月到2020年12月,但是,“金额”一栏必须根据以下规则填写:

(1) 。如果日期介于“2018/01”和“2019/01”之间,则取起始值1000,对于任何后续行,将之前的值乘以1.06。

(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...