Как найти значение if, если оно не пустое и не null в фрейме данных pandas?

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #фрейм данных

Вопрос:

Как узнать, является ли поле не пустым («) и не null в фрейме данных pandas?

Я использую if not value and pd.notna(value):

Это правильно или есть лучший API, который обрабатывает эту логику напрямую?

Ответ №1:

Как насчет изменения пустого значения на NaN, а затем проверки. Кр.

 df = pd.DataFrame({"a": [np.nan, 1, ""]})
df = df.replace('', np.nan)
print(df.isnull())
 

который возвращает:

        a
0   True
1  False
2   True
 

Альтернативой является заполнение NaN на пустой '' , а затем проверка:

 df = pd.DataFrame({"a": [np.nan, 1, ""]})
df = df.fillna('')
print(df=='')
 

который возвращает:

        a
0   True
1  False
2   True
 

Ответ №2:

Вы можете заменить поля пустыми строками или содержащими только пробелы на np.nan или None в вашем фрейме данных, а затем использовать notna для поиска допустимых значений.

 df.replace(r'^s*

Более того,  if not value and pd.notna(value)  не работает для пустой строки или поля, содержащего только пробелы:

 value = ''
not value and pd.notna(value)  # this is True
value = None
not value and pd.notna(value)  # this is False
value = np.nan
not value and pd.notna(value)  # this is False
 


, np.nan, regex=True, inplace=True)
Более того, if not value and pd.notna(value) не работает для пустой строки или поля, содержащего только пробелы: