2014-11-17 4 views
2

factorize를 사용하여 "L"및 "W"(wins 및 lose)와 같은 요소의 레벨을 " 0 "및"1 ":누락 된 케이스를 커버하기 위해 팬더에서 factorize를 사용할 때 apriori를 사용하는 경우

import pandas as pd 
first_df = pd.DataFrame({'outcome': ["L", "L", "W", "W"]}) 
pd.factorize(first_df['outcome']) 

위의 값은 (array([0, 0, 1, 1]), array(['L', 'W'], dtype=object))입니다.

그러나, 나중에, 내가 여기에 우리가 지금 새로운 결과, 무승부 ("D")를 가지고 다른 결과로이 결과를 결합, 그리고 줄은 상황이 끈적 얻을 수있는 곳입니다 :

second_df = pd.DataFrame({'outcome': ["L", "L", "D", "D"]}) 
pd.factorize(second_df['outcome']) 

이것은 (array([0, 0, 1, 1]), array(['L', 'D'], dtype=object))

내가 선제 나는 dataframes을 만들 때 3 개 가지 수준이 있다는 사실을 선언하고 정확한 수준에 대한 올바른 숫자 값을 매핑 할 수있는 방법이 필요 반환합니다. 이것을 어떻게 할 수 있습니까? 그건, Categorical의의

outcome_cat = pd.Categorical(
    first_df['outcome'], 
    categories=['L', 'W', 'D'], ordered=False 
) 

시멘틱스는 pd.factorize()의 출력과 정확히 일치하지 않을 수 있습니다,하지만 codes 속성은 숫자 값으로 데이터가 포함되어이 같은

+0

직접 인수 분해 카테고리가 중요하지 않은 경우에만 필요합니다; 거의 언제나 단지 Categorical을 사용한다. – Jeff

답변

2

뭔가는이 Categorical 사용하여 확실히 가능하다 단지 Categorical도 관찰되지 'D' 값의 인식이다 :

outcome_cat.codes 
Out[6]: array([0, 0, 1, 1], dtype=int8)