首页 > 解决方案 > 函数中的缺失值条件 Pandas

问题描述

我想要一个函数,如果 area 列缺少值(如 SQL 中的 NULL),则目标“wanted”变量中的结果为“A”。

我对在 Python 中使用 None、isnull()、np.nan 概念感到困惑


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

标签: pythonpandasfunctionmissing-data

解决方案


np.nan不等于None事实上也不NaN等于NaN(check 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.whereseries.isna()不是使用矢量化它apply

df['wanted2'] = np.where(df['area'].isna(),'A',np.nan)

推荐阅读