【问题标题】:How to apply a function to severals pandas columns as arguments?如何将函数应用于多个熊猫列作为参数?
【发布时间】:2020-01-24 15:38:13
【问题描述】:

请问你能帮我解决我的日常问题吗? 我有一个名为 2 列的熊猫数据框 df:

MatSituation  NbChild 
    1         0
    2         1
    3         0
    4         1

我想创建一个带有函数 f 的新列,该函数具有“MatSituation”和“NbChild”参数:

df[n_NbChild] = df['MatSituation ','NbChild '].apply(.....)

请问我该如何处理这种情况?

非常感谢。 蒂埃里

df['n_Age'] = df['Age'][dataset['Age'].notnull()].apply(age_classify)

【问题讨论】:

  • 您的预期输出是什么?

标签: pandas function apply


【解决方案1】:

您可以只创建一个接受两个输入并返回一个值的函数,然后为其分配一个新列。

例如:

def sum_two_columns(a, b):
    return a + b


df['New Column'] = sum_two_columns(df.MatSituation, df.NbChild)

df

MatSituation  NbChild   New Column
    1         0            1
    2         1            3
    3         0            3
    4         1            5

【讨论】:

  • 您好,谢谢。我试过你的提议,但第一个参数似乎是行索引: def NbEnfNull(x,y): print("Le code est {} et le nb d\'enfant est {}".format(x,y)) dataset[' n_nbr_enf'] = NbEnfNull(dataset['COD_SIS_FAM'],dataset['NBR_ENF']) 输出:Le code est 0 2 1 2 2 4 3 3 4 1 5 1 6 1 然后第一个参数 id 的值介于 1 和 4 之间我不明白...
【解决方案2】:

如果 age_classify 是一个接受行作为参数的函数 - 你唯一需要修改的是: df['n_Age'] = df['Age'][dataset['Age'].notnull()].apply(age_classify, axis=1)

【讨论】:

    【解决方案3】:

    我修改了我的函数:

    def NbEnfNull(x,y):
        if (y.empty):
            if (x == 1 or x == 2): 
                return 0
            elif (x == 3 or x == 4): 
                return 1   
        else:
            return y
    

    呼叫:

    df['n_nbr_enf'] = NbEnfNull(df['COD_SIS_FAM'],df['NBR_ENF'])
    

    但我的 df['n_nbr_enf'] 有空值

    df['n_nbr_enf'].isnull().sum()
    

    1472 不知道怎么进步... 非常感谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      相关资源
      最近更新 更多