2017-10-02 2 views
1

데이터 프레임이 pd입니다. 나는 열 irr의 값을 thresh hold보다 위 또는 아래에 따라 변경하려고합니다.팬더 : 데이터 프레임의 값을 설정하는 삼항 조건부 연산자

한 줄로 어떻게 처리 할 수 ​​있습니까? 지금은

pd['irr'] = pd['irr'][pd['cs']*0.63 > pd['irr']] = 1.0 
pd['irr'] = pd['irr'][pd['cs']*0.63 <= pd['irr']] = 0.0 

과정의 문제가있는 것은 내가 irr을 변경하고 다음 줄에 다시 확인한다는 것입니다.

팬더 용 삼항 조건부 연산자 같은 것이 있습니까?

답변

1

팬더에서 아니요, numpy 예.

당신은 numpy.where를 사용하거나 float에 조건에 의해 생성 boolean Series 변환 할 수 있습니다 - True1.0False의이되어 있습니다 0.0 :

pd['irr'] = np.where(pd['cs']*0.63 > pd['irr'], 1.0, 0.0) 

또는 :

pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float) 

샘플 :

pd = pd.DataFrame({'cs':[1,2,5], 
        'irr':[0,100,0.04]}) 

print (pd) 
    cs  irr 
0 1 0.00 
1 2 100.00 
2 5 0.04 

pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float) 
print (pd) 
    cs irr 
0 1 1.0 
1 2 0.0 
2 5 1.0 
,691을