Моя цель - добавить столбец с именем заголовка «фаза», который будет содержать имя столбцов «фаза A», «фаза B», «фаза C».
Я хочу бытьвозможность сравнить «дату выборки» с датами фаз A и B и C. В зависимости от расположения «даты выборки» на временной шкале, я хочу вернуть фазу, в течение которой была взята проба.
Предположим, что этот кадр данных:
phases=pd.DataFrame({'ID':['blue','red','yellow'], \
'sample date':['2018-05-23','2018-06-08','2018-06-01'], \
'phase A':['2018-03-22','2018-03-16','2018-03-09'], \
'phase B':['2018-06-02','2018-04-29','2018-05-19'], \
'phase C':['2018-09-30','2018-09-25','2018-09-12']})
phases['sample date']=pd.to_datetime(phases['sample date'])
phases['phase A']=pd.to_datetime(phases['phase A'])
phases['phase B']=pd.to_datetime(phases['phase B'])
phases['phase C']=pd.to_datetime(phases['phase C'])
# (I failed to convert all 4 columns to_datetimes in one row)
Если «фаза B»> «дата выборки»> = «фаза A», то в новом столбце должна быть «фаза A».Если «дата выборки»> = «фаза C», то значение должно быть «фаза C».Если «дата выборки» <«фаза A», тогда значение должно быть False или Nan.Для приведенного выше примера выходные данные должны быть: </p>
ID sample date phase A phase B phase C phase
0 A 2018-05-23 2018-03-22 2018-06-02 2018-09-30 phase A
1 B 2018-06-08 2018-03-16 2018-04-29 2018-09-25 phase B
2 C 2018-06-01 2018-03-09 2018-05-19 2018-09-12 phase B
Есть ли хорошее решение для этого?Я пытаюсь объединить lookup
и where
, но я даже не уверен, в правильном ли я направлении.Любые идеи более чем приветствуются, спасибо!