Вложенные условия в numpy и pandas не работают - PullRequest
1 голос
/ 07 марта 2020

Я пытаюсь сгенерировать фрейм данных с двумя столбцами: «дата» и «сумма». Дата идет с 2018-01 по 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      
 )))

Вывод применяется только первое правило (1.), но игнорирует остальные. Таким образом, он заполняет только строки 0-12, а затем все последующие значения равны 0 ... почему?

    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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...