Как запретить пандам интерпретировать «na» как NaN в Python

Чтобы панды не интерпретировали строку «na» как NaN (а не число), вы можете использовать различные методы. Вот несколько подходов с примерами кода:

Метод 1. Укажите значение na во время read_csv()

import pandas as pd
df = pd.read_csv('data.csv', na_values=['na'])

В этом методе вы предоставляете список ['na']для параметра na_valuesфункции read_csv(). Это указывает пандам обрабатывать строку «na» как NaN при чтении файла CSV.

Метод 2. Используйте параметр Keep_default_na

import pandas as pd
df = pd.read_csv('data.csv', keep_default_na=False, na_values=[''])

Установив для keep_default_naзначение False, вы даете пандам указание не интерпретировать какие-либо значения NaN по умолчанию. Затем вы можете явно определить «na» как NaN, включив его в список na_values.

Метод 3. Замените «na» другим заполнителем

import pandas as pd
df = pd.read_csv('data.csv')
df.replace('na', 'placeholder', inplace=True)

При таком подходе вы можете прочитать CSV-файл как обычно, а затем заменить все вхождения «na» другим значением-заполнителем, используя метод replace().

Метод 4. Используйте специальную функцию конвертера

import pandas as pd
def na_converter(val):
    if val == 'na':
        return None
    return val
df = pd.read_csv('data.csv', converters={'column_name': na_converter})

Здесь вы определяете пользовательскую функцию конвертера na_converter(), которая проверяет, является ли значение «na», и соответственно возвращает None (или любое другое желаемое значение). Затем вы передаете эту функцию конвертера параметру convertersфункции read_csv(), чтобы применить ее к определенным столбцам.