отсутствует в функции, примененной к столбцу данных pandas - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь применить функцию к моим столбцам 'age' и 'area', чтобы получить результаты, которые я показываю в столбце 'wanted'.

К сожалению, эта функция дает мне ошибки. Я знаю, что в Pandas есть другие методы, такие как ilo c, но я хотел бы понять эту конкретную ситуацию.

raw_data = {'age': [-1, np.nan, 10, 300, 20],'area': ['N','S','W',np.nan,np.nan],
    'wanted': ['A',np.nan,'A',np.nan,np.nan]}
df = pd.DataFrame(raw_data, columns = ['age','area','wanted'])
df

def my_funct(df) :

    if df["age"].isnull() :
        return np.nan 
    elif df["area"].notnull():
        return 'A'
    else:
        return np.nan

df["target"] = df.apply(lambda df:my_funct(df) ,axis = 1)

1 Ответ

2 голосов
/ 10 апреля 2020

В вашем примере проблема в том, что когда вы передаете строку своей функции, ссылаясь на df ['age'], она дает вам float, у которого нет метода isnull (). Чтобы проверить, является ли значение с плавающей точкой нулевым, вы можете использовать функцию pd.isna. Аналогичный случай для notna ().

def my_funct(df) :

    if pd.isna(df["age"]) :
        return np.nan 
    elif pd.notna(df["area"]):
        return 'A'
    else:
        return np.nan

df["target"] = df.apply(lambda x: my_funct(x) ,axis = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...