0
열 C = 'a'이면 열 A와 같고 열 C = 'b'이면 열 B와 같은 데이터 프레임에 새 열을 만들고 싶습니다. 이것을 구현했습니다 :다른 열, 벡터화 된 판다의 조건에 따라 열을 선택하십시오.
def f(row):
if row['C'] = 'a':
return row['A']
elif row['C'] = 'b':
return row['B']
return np.nan
df['new'] = df.apply(f, axis=1)
느리게 실행되는 것처럼 느낍니다. The answer here은 이것이 벡터화되지 않았다고 설명합니다.
또는 :
df.ix[df[C]=='a',df['new']] = df.ix[df[C]=='a',df['A']]
df.ix[df[C]=='b',df['new']] = df.ix[df[C]=='b',df['B']]
이 벡터화인가? 판다에서 이렇게하는 다른 '올바른'방법이 있습니까? 벡터화 된 함수는 어떻게 다릅니 까?
이 적용 단지 루프 피해야한다 시도 가능한 경우, 솔루션 당신이 원하는 일을 여러 가지 방법이 있습니다, 괜찮습니다. 데이터의 크기에 따라 샘플 코드가 단순화 될 수 있습니다 :'df.loc [df [ 'C'] == 'a', 'new'] = df [ 'A']' 조건 – EdChum