Написал функцию для количественного определения нулей в каждом столбце фрейма данных, но не удаляется - PullRequest
0 голосов
/ 03 мая 2019

Я пишу функцию для автоматической проверки количества нулевых значений на столбец в кадре данных, затем, если количество нулей меньше или равно 2000, отбросьте строки, содержащие нулевые значения

Я написал некоторый код, который успешно выводит текстовые строки, чтобы отметить, какой столбец он проанализировал

def drop_na(df,cols):
    for i in cols:

        missing_vals = df[i].isnull().sum()


        if missing_vals <= 2000:
            df = df.dropna(subset=[i])
        print(f'finished checking column  "{i}"')
    print('FINISHED ALL!')

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

Я вызываю функцию с drop_na (data, data.columns)

1 Ответ

1 голос
/ 03 мая 2019

Похоже, вы удаляете только строки только внутри функции. Выполнение этого на месте решает проблему, как в следующем коде работает:

def drop_na(data):
    cols = data.cols
    subset = []
    # Determine bad columns, and store them in `subset` list.
    for i in cols:
        missing_vals = df[i].isnull().sum()
        if missing_vals <= 2000:
            subset.append(i)
    # Now remove all bad columns at once, but inplace.
    df.dropna(subset=subset, inplace=True)
    print('FINISHED ALL!')

Если вы не хотите делать это на месте, тогда работает возврат df и присвоение возвращенного значения новой переменной df2 = drop_na(data). Не забудьте переиндексировать новый фрейм данных, если вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...