фильтровать значения в столбце dataframe на основе нулевых значений в другом столбце python dataframe

#dataframe #replace #null #multiple-columns #missing-data

#dataframe #заменить #null #несколько столбцов #отсутствует-данные

Вопрос:

Я немного застрял на этом, так что, надеюсь, у кого-то есть лучшее руководство. В настоящее время у меня есть фрейм данных, который выглядит примерно так (только намного больше строк):

 |"released_date"| "status"  |

 ------------- -------- 

|   12/12/20  |released|

 ------------- -------- 

|   10/01/20  |   NaN  |

 ------------- -------- 

|   NaN       |   NaN  |

 ------------- -------- 

|   NaN.      |released|

 ------------- -------- 
 

Я хотел сделать df['status'].fillna('released' if df.released_date.notnull())

иначе, заполните любое значение Nan в столбце status df значением «released», если df.released_date не является нулевым значением.

Я продолжаю получать различные сообщения об ошибках, когда я делаю это, хотя в разных вариантах, сначала для приведенного выше кода это синтаксическая ошибка, которая, как я полагаю, вызвана тем, что notnull() возвращает логический массив?

Я чувствую, что для этого есть простой ответ, и я почему-то его не вижу. Я не нашел никаких подобных вопросов, где я пытаюсь организовать что-то на основе значений null в dataframe, что заставляет меня задуматься, не идеальна ли моя методология в первую очередь? Как я могу фильтровать значения в столбце фрейма данных на основе нулевых значений в другом столбце без использования isnull() или notnull(), если они в любом случае возвращают только логические массивы? использование == Null, похоже, тоже не работает…

Комментарии:

1. боже, это форматирование df выглядит грубо. но, надеюсь, это имеет смысл

Ответ №1:

Попробуйте:

 idx = df[(df['status'].isnull()) amp; (~df['released_date'].isnull())].index
df.loc[idx,'status'] = 'released'
 

Сначала получите индекс всех строк со значением ‘status’, равным null, и значением ‘released_date’, равным null. Затем используйте df.loc для обновления столбца состояния.

С принтами:

   released_date    status
0      12/12/20  released
1      10/01/20  released
2           NaN       NaN
3           NaN  released
 

Комментарии:

1. Рад, что смог помочь!