应用于熊猫数据框列的函数缺少

时间:2020-04-10 13:37:40

标签: python pandas function dataframe missing-data

我试图将一个函数应用于“年龄”和“面积”列,以便获得在“所需”列中显示的结果。

不幸的是,此功能给我带来了错误。我知道Pandas中还有其他方法,例如iloc,但是我想了解这种特殊情况。

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 个答案:

答案 0 :(得分:2)

在您的示例中,问题是当您通过引用df ['age']向函数传递一行时,它为您提供了一个浮点数,该浮点数没有名为isull()的方法。要检查float是否为空,可以使用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)