У меня есть фрейм данных с именем df
, который выглядит примерно так (за исключением того, что число столбцов «Дата» увеличивается до Date_8
, а есть несколько сотен клиентов - я упростил его здесь).
Client_ID Date_1 Date_2 Date_3 Date_4
C1019876 relationship no change no change no change
C1018765 no change single no change no change
C1017654 single no change relationship NaN
C1016543 NaN relationship no change single
C1015432 NaN no change single NaN
Я хочу создать два новых столбца, first_status
и last_status
. first_status
должно равняться первому заданному статусу взаимосвязи в 4 столбцах даты, т. Е. Первый ответ равен либо relationship
или single
, а last_status
должно равняться последнему заданному статусу взаимосвязи в 4 столбцах даты. Получившийся df
должен выглядеть следующим образом.
Client_ID Date_1 Date_2 Date_3 Date_4 first_status last_status
C1019876 relationship no change no change no change relationship relationship
C1018765 no change single no change no change single single
C1017654 single no change relationship NaN single relationship
C1016543 NaN relationship no change single relationship single
C1015432 NaN no change single NaN single single
Я думаю, что эти две колонки могут быть созданы с помощью понимания списка, но я не знаю как. Для столбца first_status
я предполагаю, что код будет выполнять что-то вроде следующего в каждой строке в df
:
- Найти 1-й
Date
столбец, в котором задано значение (отфильтровывает NaN)
- Если значение =
no change
, перейти к следующему столбцу Date
- Если значение =
relationship
, first_status
= relationship
- Если значение =
single
, first_status
= single
Для столбца last_status
я представляю, что код будет выполнять что-то вроде следующего в каждой строке в df
:
- Найти последний
Date
столбец, в котором задано значение (отфильтровывает NaN)
- Если значение =
no change
, перейти к предыдущему столбцу Date
- Если значение =
relationship
, last_status
= relationship
- Если значение =
single
, last_status
= single