2015-12-15 96 views
4

您可以使用兩個不同列中的值作爲參數來創建python熊貓函數嗎?python pandas-將兩個參數應用於列的函數

我有一個函數,如果兩列的值在同一範圍內,則返回1。否則返回0:

def segmentMatch(RealTime, ResponseTime): 
    if RealTime <= 566 and ResponseTime <= 566: 
     matchVar = 1 
    elif 566 < RealTime <= 1132 and 566 < ResponseTime <= 1132: 
     matchVar = 1 
    elif 1132 < RealTime <= 1698 and 1132 < ResponseTime <= 1698: 
     matchVar = 1 
    else: 
     matchVar = 0 
    return matchVar 

我想的第一個參數,RealTime,是在我的數據幀中的列中,使得所述函數將在該列的每一行的值。例如RealTime是,第二個參數是df ['ResponseCol']`。我希望結果成爲數據框中的新列。我遇到了severalthreads已經回答了類似的問題,但它看起來像那些參數是變量,而不是在數據框的行中的值。

我嘗試以下,但它沒有工作:

df['NewCol'] = df.apply(segmentMatch, args=(df['TimeCol'], df['ResponseCol']), axis=1) 

回答

7

爲什麼不這樣做呢?

df['NewCol'] = df.apply(lambda x: segmentMatch(x['TimeCol'], x['ResponseCol']), axis=1) 

而不是試圖列作爲參數傳遞在你的榜樣,我們現在只需通過每一行作爲參數在相應的條目,並將結果保存在'NewCol'

相關問題