2017-12-28 5 views
1

저는 두 개의 열을 비교하고 비교 결과를 기반으로 한 계산으로 새 열을 만들고 싶은 팬더 데이터 프레임이 있습니다. 논리는 다음과 같습니다 :Pandas, Python 3의 논리 인 경우

If df['column1']>df['column2'] : 
    df['New column']=(df['column1']+df['column2']) 
else : 
    df['New column']=(df['column1']+df['column2']+1) 

나는 Pandas와 Python에 상당히 익숙하므로 구조가 잘못되었다고 확신합니다. 너희들이 나를 올바른 방향으로 가르 칠 수 있니?

+0

내가 갈 경우처럼 [부울 배열] (https://docs.scipy.org/doc/numpy-1.13.0/user/basics.indexing.html#boolean-or-mask-index-arrays)에 대해서도 읽어 보시기 바랍니다. 그들은 numpy와 pandas 둘 다로 작동합니다. – Georgy

답변

-1

나는 이것이 당신의 일을해야한다고 생각합니다. 비록 당신이 새로운 질문을 시작하지 않고 stackoverflow에 비슷한 질문을 찾을 수 있습니다. 어쨌든.

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.randint(0,10,size=(10, 2)), columns=list('AB')) 

def get_new_col_val(row): 
    if row['A'] > row['B']: 
     return row['A'] + row['B'] 
    else: 
     return row['A'] + row['B'] + 1 

df['new_col'] = df.apply(get_new_col_val, axis=1) 

이것은 가장 간단한 방법이지만 다른 방법으로도이를 수행 할 수 있습니다.

즐기십시오!

+0

이 질문을 다른 질문과 유사하게 생각하면 질문을 중복 질문으로 표시해야합니다! 적절한 권한이 있다면 –

1

더 많은 자유를 위해 numpy로 이동할 수 있습니다. else 문 하나만있는 경우 np.where을 사용하십시오. 당신이 dataframe이있는 경우 pd.np

를 사용하여 팬더에서 NumPy와 libarary에 액세스 할 수 있습니다

df = pd.DataFrame({'col1':[1,2,3,4,5],'col2':[1,3,4,5,2]}) 

df['where'] = pd.np.where(df['col1']>df['col2'], df['col1']+df['col2'], df['col1']+df['col2']+1) 

    col1 col2 where 
0  1  1  3 
1  2  3  6 
2  3  4  8 
3  4  5  10 
4  5  2  7 

# Not exactly by much like 
#if df['col1']>df['col2']: 
# return df['col1']+df['col2'] 
#else: 
# return df['col1']+df['col2']+1 

당신이 다른 하나 이상있는 경우 많은 다른 사다리는 다음 np.select

m1 = df['col1']<df['col2'] 
m2 = df['col1']>df['col2'] 

df['select'] = pd.np.select([m1,m2], [df['col1']+df['col2'],0], 'equal') 
#       all conditions, all executables, final else 
    col1 col2 where select 
0  1  1  3 equal 
1  2  3  6  5 
2  3  4  8  7 
3  4  5  10  9 
4  5  2  7  0 

#Which is much like 
#if df['col1']< df['col2']: 
# return df['col1'] + df['col2'] 
#elif df['col1']>df['col2']: 
# return 0 
#else 
# return 'equal' 
+0

고마워! 지금 Numpy를 사용하고 있으며 실제로 훨씬 간단합니다. 감사! –

+0

@SalvaTdl 도움이된다면 anwer를 수락하십시오. – Dark