1

我有一个在数据框中使用两个列的函数:

def create_time(var, var1):  
    if var == "Helår":  
        y = var1+'Q4'  
    else:  
        if var == 'Halvår':  
            y = var1+'Q2'  
        else:  
            y = var1+'Q'+str(var)[0:1]  
    return y   

现在我想遍历我的数据框,使用该函数创建一个新列,其中 var 和 var1 是数据框中的列

我尝试以下方法,但没有运气:

for row in bd.iterrows():
      A = str(bd['Var'])    
      B = str(bd['Var1'])
      bd['period']=create_time(A,B)
4

1 回答 1

1

循环是最后的手段。通常有一种“矢量化”的方式来操作整个 DataFrame,它总是更快并且通常也更具可读性。

要将您的自定义函数应用于每一行,请apply与关键字参数一起使用axis=1

bd['period'] = bd[['Var', 'Var1']].apply(lambda x: create_time(*x), axis=1)

你可能想知道为什么不只是bd.apply(create_time). 由于create_time需要两个参数,我们必须将行“解包”x成它的两个值并将它们传递给函数。

于 2013-10-16T13:03:48.567 回答