условия отсутствия значения Pandas в функции - PullRequest
0 голосов
/ 05 апреля 2020

Мне нужна функция, в которой, если столбец области имеет пропущенные значения (например, NULL в SQL), результатом является 'A' в целевой переменной 'wanted'.

Я запутался в использовании Нет, isnull (), np.nan понятия в Python


raw_data = {'area': ['S','W',np.nan,np.nan], 'wanted': [np.nan,np.nan,'A','A']}
df = pd.DataFrame(raw_data, columns = ['area','wanted'])
df


def my_func(x):
    if (x) is None:
        return 'A'
    else:
        return np.nan


df['wanted2'] = df['area'].apply(my_func)

df

Ответы [ 2 ]

3 голосов
/ 05 апреля 2020

np.nan не равно None, infact NaN также не равно NaN (проверка np.nan == None), поэтому вы можете использовать pd.isna() в вашем условии if :

def my_func(x):
    if pd.isna(x):
        return 'A'
    else:
        return np.nan


df['wanted2'] = df['area'].apply(my_func)

, но вы можете векторизовать это, используя np.where и series.isna() вместо apply

df['wanted2'] = np.where(df['area'].isna(),'A',np.nan)
0 голосов
/ 05 апреля 2020

Вы можете использовать fill.na

df['wanted2'] = df.area.fillna('A')

В вашем коде верните np.nan, если значение существует в area и в противном случае 'A'.

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