2017-02-22 87 views
-2

因此,我在熊貓數據框中有大量的列,我需要通過一個函數傳遞它們的組。該功能很大,但我會在下面創建一個示例。我不知道如何將df.varName的引用傳遞給該函數,而不會導致未定義變量的問題。當我嘗試一個功能,如:如何將熊貓數據框和列傳遞給函數

def bianco2(df, varX, varT): 
    stdX = np.std(df.varX) 
    stdT = np.std(df.varT) 
    newVar = stdX + stdT 
    return newVar 

我得到的錯誤,沒有定義varX。所以我寫了,我會通過整個短語的功能:

def bianco3(varX, varT): 
    stdX = np.std(varX) 
    stdT = np.(varT) 
    newVar = stdX + stdT 
    return newVar 

其中「VARx前提= df.varX」。

這工作,但對大量的變量不實用,因爲我仍然必須手動更新每個varX和varT。所以我試圖用df.varX格式創建一個變量列表,然後使用for循環來傳遞變量列表。問題是python將它視爲一個字符串而不是引用。我看着使用functools.partial但不成功。

有關如何以簡單格式編寫此代碼並能夠將熊貓列傳遞給函數的任何想法?

+1

不知道你的意思。你怎麼稱呼'bianco2'?嘗試發佈[mcve]。 – Goyo

回答

0

您可能想試試這個嗎?

def bianco2(df, varX, varT): 
    stdX = np.std(df[varX]) 
    stdT = np.std(df[varT]) 
    newVar = stdX + stdT 
    return newVar 

print bianco2(df,'Customer','Policy') 

輸入

Policy Customer Employee CoveredDate LapseDate 
0  123  1234  1234 2011-06-01 2013-01-01 
1  124  1234  1234 2016-01-01 2013-01-01 
2  124  5678  5555 2014-01-01 2013-01-01 

輸出

2095.39309492 
+0

謝謝四條!這應該簡化我的問題。 – dbianco

相關問題