Как я могу применить функцию к столбцам в кадре данных Pandas, который включает количество NaN в каждом столбце? - PullRequest
2 голосов
/ 11 октября 2019

Мне нужно применить функцию к каждому столбцу в кадре данных Pandas, который включает количество NaN в каждом столбце. Скажем, у меня есть этот кадр данных:

import pandas as pd

df = pd.DataFrame({'Baseball': [3, 1, 2], 'Soccer': [1, 6, 7], 'Rugby': [8, 7, None]})

   Baseball  Soccer  Rugby
0         3       1    8.0
1         1       6    7.0
2         2       7    NaN

Я могу получить количество NaN в каждом столбце с помощью:

df.isnull().sum()

Baseball    0
Soccer      0
Rugby       1

Но я не могу понять, как использовать этот результат вфункция, применяемая к каждому столбцу. Скажем, в качестве примера, я хочу добавить число NaN в столбце к каждому элементу в этом столбце, чтобы получить:

   Baseball  Soccer  Rugby
0         3       1    9.0
1         1       6    8.0
2         2       7    NaN

(Моя фактическая функция более сложна.) Я попытался:

def f(x, y):
    return x + y

df2 = df.apply(lambda x: f(x, df.isnull().sum()))

и я получаю искаженное представление:

          Baseball  Soccer  Rugby
0              NaN     NaN    NaN
1              NaN     NaN    NaN
2              NaN     NaN    NaN
Baseball       NaN     NaN    NaN
Rugby          NaN     NaN    NaN
Soccer         NaN     NaN    NaN

Есть идеи, как использовать количество NaN в каждом столбце в функции, применяемой к каждому столбцу?

Спасибозаранее!

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Я предпочитаю ответ @ALollz ';df.add(df.isnull().sum()).

Лямбда-функция, которую @Dribbler определяет, уже существует в виде .add().

0 голосов
/ 11 октября 2019

Благодаря Datanovice и vb_rises ответ таков:

df.apply(lambda x : x + df.isnull().sum(), axis=1)

Если у кого-то был похожий вопрос, я хотел, чтобы ответ был ясным и без необходимости читать комментарии. Я думал, что ось = 1 (по столбцам) - это значение по умолчанию в Пандах, но, похоже, это не всегда так для всех методов.

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