2016-09-01 3 views
2

팬더 여러 기준을 사용하여 대체 : 지금 다른 열을 추가 할찾아 나는 다음과 같은 dataframe (DF) 한 파이썬

df['upper_limit'] = df[['pop_1','pop_2']].max(axis=1) 

: 내가 추가 열을 'UPPER_LIMIT'

loc pop_1 source_1 pop_2 source_2 
a 99 group_a 77 group_b 
b 93 group_a 90 group_b 
c 58 group_a 59 group_b 
d 47 group_a 62 group_b 

를 만들 'upper_limit'의 값을보고 pop_1 및 pop_2과 비교 한 다음 일치하는 경우 source_1 또는 source_2에서 텍스트를 선택합니다. 즉 :하지만 열이

df['source'] = 'n/a' 
df['source'].replace(z,inplace=True) 

이것은 dataframe를 반환

table_dict = df[['pop_1','source_1']] 
z = table_dict.to_dict 

을 그리고 사용하여이지도 :

loc pop_1 source_1 pop_2 source_2 upper_limit source 
a 99 group_a 77 group_b 99 group_a 
b 93 group_a 90 group_b 93 group_a 
c 58 group_a 59 group_b 59 group_b 
d 47 group_a 62 group_b 62 group_b 

나는 pop_1에서 딕셔너리를 만들고 통해 source_1 위해 노력했다 '출처'는 n/a 결과 만 표시합니다.

답변

1

이제 'upper_limit'의 값을보고 pop_1 및 pop_2과 비교 한 다음 일치 할 때 source_1 또는 source_2에서 텍스트를 선택하는 다른 열을 추가하려고합니다.

당신은 단순히 np.where를 사용하여 훨씬 더 많은 일을 할 수 있습니다

In [19]: import numpy as np 

In [20]: df['upper_limit source'] = np.where(df.upper_limit == df.pop_1, df.source_1, df.source_2) 

In [20]: df 
Out[20]: 
    loc pop_1 pop_2 source_1 source_2 upper_limit upper_limit source 
0 a  99  77 group_a group_b   99   group_a 
1 b  93  90 group_a group_b   93   group_a 
2 c  58  59 group_a group_b   59   group_b 
3 d  47  62 group_a group_b   62   group_b