2013-10-16 78 views
1

我有一個數據幀使用兩個colomns功能:使用功能惠蔭通過數據幀蟒蛇循環/熊貓

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 

現在我想循環hrough我的數據框,使用功能,其中var creatring新列和VAR1是列數據幀

我嘗試以下,但沒有運氣:

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

回答

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」解壓縮爲其兩個值並將其傳遞給該函數。

+0

謝謝。我只是在datafram中存在不止var和var 1的問題。你是否解決了這個問題?試試這個沒有運氣bd ['period'] = bd.apply(lambda x:create_time(x ['Var'],x ['Var1'],axis = 1)) – user2866103

+0

只想提一下,它在一個完美的DF只有正確的列.... – user2866103

+0

看到我的編輯。這應該工作。 –