2013-10-16 11 views
1

내가 가지고 dataframe에 두 된 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 

지금 내가 어디에 VAR 함수를 사용하여 새 열을 creatring, 내 dataframe hrough 루프를 원하는 및 VAR1은 열

내가 다음에 시도 dataframe에 있지만, 운이 없다 :

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

답변

1

루핑은 최후의 수단이다. 일반적으로 전체 DataFrame에서 작동하는 "벡터화 된"방법이 있으며 항상 더 빠르고 보통 더 읽기 쉽습니다.

각 행에 사용자 지정 함수를 적용하려면 에 키워드 인수 axis=1을 사용하십시오.

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

bd.apply(create_time)이 아닌지 궁금해 할 것입니다. create_time은 두 개의 인수를 원하기 때문에 행 x을 "unpack"하여 두 값으로 전달해야합니다.

+0

감사합니다. 난 그냥 거기에 문제가 varf 및 var1 이상의 데이터가 있습니다. 너는 이것을 해결합니까? 행운이 없으면 시도해 보았습니다. [ 'period'] = bd.apply (lambda x : create_time (x [ 'Var'], x [ 'Var1'], axis = 1)) – user2866103

+0

그냥 완벽하게 작동한다고 언급하고 싶습니다. 오른쪽 열에 만 df ... – user2866103

+0

내 편집을 참조하십시오. 그게 효과가있다. –