【问题标题】:How to create a new column using a function that requires multiple columns as arguments如何使用需要多列作为参数的函数创建新列
【发布时间】:2020-11-09 22:08:29
【问题描述】:

我有一个 Yield 函数,它接受多个参数和一个数据框,其中包含多个包含参数输入的列。

def yield(price, par, maturity, coup, freq)

df:

Name    Price    Years_to_Maturity    Coup
abcd    98       4.5                  375
efgh    94       3                    425        

我想通过使用数据框中的列应用函数,在数据框中创建一个名为“Yield”的新列,但我无法成功地做到这一点。

我知道该函数适用于直接输入,但我正在努力让它适用于多个列和常量(我希望 par 和频率保持不变)。我想将该函数应用于每一行,例如:

df["Yield"] = df.apply(yield(df["price"], 100, df["Years_to_Maturity"], df["Coup"], 2), axis=1)

我尝试使用在类似答案中找到的以下方法,但由于缺少必需的位置参数,我得到了 TypeError。我已尝试解决此问题,但出现了其他错误。

df['new_column_name'] = df.apply(lambda x: my_function(x['value_1'], x['value_2']), axis=1)

如何通过输入现有列和固定值的组合来使用该函数创建新列?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您的 lambda 函数几乎是正确的,请尝试以下操作:

    df["Yield"] = df.apply(lambda row: yield(row.Price, 100, row.Years_to_Maturity, row.Coup, 2), axis=1)
    

    请记住,yield 是 Python 中的一个关键字,因此不是推荐的函数名称,它可能会导致一些严重的错误。

    【讨论】:

    • 太棒了!这工作得很好,谢谢!我的函数实际上并没有被称为 yield,我只是认为它适用于示例,所以讨厌的错误应该是最少的。感谢所有的帮助,尽管如此。我知道我很接近,但就是无法放下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多