功能利用率 - 使用apply vs direct call

时间:2017-09-19 14:19:12

标签: python function pandas dataframe apply

我的代码如下。如果我通过第一种方法调用该函数,它就可以工作。但是如果我使用第二种方法调用该函数,我会收到错误。我认为方法二应该工作,因为函数期望列作为其输入。为什么我们不得不说如方法1中所描述的那样在列上运行函数?

trainpandas数据框。

import pandas as pd

def impute_age(cols):
    Age = cols[0]
    Pclass = cols[1]

    if pd.isnull(Age):
        if Pclass == 1:
            return 37
        elif Pclass == 2:
            return 29
        else:
            return 24
    else:
        return Age

#pd.isnull(train[['Age']])

#method 1
#train['Age'] = train[['Age','Pclass']].apply(impute_age, axis=1)

#method 2
impute_age(train[['Age','Pclass']])

1 个答案:

答案 0 :(得分:0)

我认为首先你需要一个格式良好的代码:

import pandas as pd
def impute_age(cols):
    Age = cols[0]
    Pclass = cols[1]

    if pd.isnull(Age):

        if Pclass == 1:
            return 37

        elif Pclass == 2:
            return 29

        else:
            return 24

    else:
        return Age


#pd.isnull(train[['Age']])

#method 1
#train['Age'] = train[['Age','Pclass']].apply(impute_age,axis=1)

#method 2
impute_age(train[['Age','Pclass']])

总之,您需要在def之后进行缩进。