У меня есть фрейм данных (df
), который выглядит как голова:
DATE BBG FLAG DATE_DIFF NEW_DATE
0 2014-03-04 1333 1 -31.0 2014-04-03
1 2014-04-04 1333 0 -91.0 2014-04-04
2 2014-07-04 1333 1 -31.0 2014-04-07
3 2014-08-04 1333 1 -31.0 2014-04-08
4 2014-09-04 1333 1 -30.0 2014-04-09
5 2014-10-04 1333 1 -31.0 2014-04-10
6 2014-11-04 1333 1 204.0 2014-04-11
7 2014-04-14 1333 0 -1.0 2014-04-14
8 2014-04-15 1333 0 -1.0 2014-04-15
9 2014-04-16 1333 0 -1.0 2014-04-16
Я пытаюсь создать новый столбец с именем PICKED
, который выбирает дату из столбца DATE
или NEW_DATE
на основании следующего:
Если FLAG = 1
, тогда, если NEW_DATE
является действительной датой, тогда выберите NEW_DATE
, в противном случае выберите ДАТУ.
Ожидаемый результат будет выглядеть так:
DATE BBG FLAG DATE_DIFF NEW_DATE PICKED
0 2014-03-04 1333 1 -31.0 2014-04-03 2014-04-03
1 2014-04-04 1333 0 -91.0 2014-04-04 2014-04-04
2 2014-07-04 1333 1 -31.0 2014-04-07 2014-04-07
3 2014-08-04 1333 1 -31.0 2014-04-08 2014-04-08
4 2014-09-04 1333 1 -30.0 2014-04-09 2014-04-09
5 2014-10-04 1333 1 -31.0 2014-04-10 2014-04-10
6 2014-11-04 1333 1 204.0 2014-04-11 2014-04-11
7 2014-04-14 1333 0 -1.0 2014-04-14 2014-04-14
8 2014-04-15 1333 0 -1.0 2014-04-15 2014-04-15
9 2014-04-16 1333 0 -1.0 2014-04-16 2014-04-16
Я пытаюсь использовать следующее для достижения этой цели:
df['PICKED'] = np.where(df['FLAG'] == 1, df.NEW_DATE.fillna(df.DATE, inplace=True), df['DATE'])
Но я получаю следующее:
DATE BBG FLAG DATE_DIFF NEW_DATE PICKED
0 2014-03-04 1333 1 -31.0 2014-04-03 NaT
1 2014-04-04 1333 0 -91.0 2014-04-04 2014-04-04
2 2014-07-04 1333 1 -31.0 2014-04-07 NaT
3 2014-08-04 1333 1 -31.0 2014-04-08 NaT
4 2014-09-04 1333 1 -30.0 2014-04-09 NaT
5 2014-10-04 1333 1 -31.0 2014-04-10 NaT
6 2014-11-04 1333 1 204.0 2014-04-11 NaT
7 2014-04-14 1333 0 -1.0 2014-04-14 2014-04-14
8 2014-04-15 1333 0 -1.0 2014-04-15 2014-04-15
9 2014-04-16 1333 0 -1.0 2014-04-16 2014-04-16
Может кто-нибудь сообщить мне, где я сделал неправильно, пожалуйста.
Спасибо