Python 如何在使用多个列和列名的熊猫中编写lambda表达式?

Python 如何在使用多个列和列名的熊猫中编写lambda表达式?,python,pandas,lambda,Python,Pandas,Lambda,我想使用lambda表达式实现以下功能 在名称位于“理想\素数\ fc”列中的列中查找值 在名称位于“prime_fc”列中的列中查找值 找到差异并放入新列“delta” 您想做以下工作吗 编写一个函数以减去两个素数值列中的值: def get_col_name(x): try: ip_fc = x['ideal_prime_fc'] p_fc = x['prime_fc'] return x[ip_fc]-x[p_fc] exce

我想使用lambda表达式实现以下功能

  • 在名称位于“理想\素数\ fc”列中的列中查找值
  • 在名称位于“prime_fc”列中的列中查找值
  • 找到差异并放入新列“delta”

  • 您想做以下工作吗

    编写一个函数以减去两个素数值列中的值:

    def get_col_name(x):
        try:
            ip_fc = x['ideal_prime_fc']
            p_fc = x['prime_fc']
            return x[ip_fc]-x[p_fc]
        except IndexError:
            return float('NaN')  # handle non-existent values however you'd prefer
    
    应用函数,分配给新列:

    df['diff'] = df.apply(lambda x: get_col_name(x), axis=1)
    
    截断的示例输出:

    983     976     ideal_prime_fc  prime_fc    diff
    2835    780     973             805         NaN
    8       2259    983             983         0.0
    2851    796     973             805         NaN
    13      7       983             976         6.0   # added for test
    

    否。例如,在第0行中,理想_素数_fc=973,素数_fc=805。我想在列名中搜索805和973,并找到差异df.iloc[0]['973']-df.iloc[0]['805']@Vinay我已经根据您的澄清更新了我的答案,如果您有机会,请接受答案。