2016-10-02 8 views
5

dataframe 행 항목입니다 인수와 함께 적용, 나는 두 개의 인수팬더, 나는 두 개의 열이 'A'와 'B'와 팬더 dataframe '안양'을 가지고

def myfunction(B, A): 
    # do something here to get the result 
    return result 

하고 싶습니다과 기능이 적용하기 위해 '적용'기능

df['C'] = df['B'].apply(myfunction, args=(df['A'],)) 

를 사용 DF에 의해 행 - 행 그러나 여기에서 일어나고있는 뭐죠 나는 오류

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

를 얻을 , 그것은 전체 시리즈로 df [ 'A']가 걸린 것 같습니다! 필요에 따라 해당 시리즈의 행 항목 만이 아닙니다.

답변

9

난 당신이 필요하다고 생각 :

import pandas as pd 
df = pd.DataFrame({'A':[1,2,3], 
        'B':[4,5,6]}) 

print (df) 
    A B 
0 1 4 
1 2 5 
2 3 6 

def myfunction(B, A): 
    #some staff 
    result = B + A 
    # do something here to get the result 
    return result 

df['C'] = df.apply(lambda x: myfunction(x.B, x.A), axis=1) 
print (df) 
    A B C 
0 1 4 5 
1 2 5 7 
2 3 6 9 

또는 :

def myfunction(x): 

    result = x.B + x.A 
    # do something here to get the result 
    return result 

df['C'] = df.apply(myfunction, axis=1) 
print (df) 
    A B C 
0 1 4 5 
1 2 5 7 
2 3 6 9 
+0

왜 캔트 제가 적용 기능에 대한 '인수'인수를 사용? –

+0

check [this] (http://stackoverflow.com/a/12183507/2901002). – jezrael

+0

@RunnerBean 당신은 인자를 전달할 수 있습니다. 'apply '는'kwargs'를 허용하므로 다음과 같은 인자를 전달할 수 있습니다 :'df ['B ']. apply (myfunction, A = df ['A '])'그러나이 경우, 전체 행을 모든 행에 적용되는 함수에 전달합니다. – piRSquared