2015-05-28 11 views
11

Robię to, aby skategoryzowanych numeryGet mapowania zmiennych kategorycznych w pand

>>> df = pd.DataFrame({'x':['good', 'bad', 'good', 'great']}, dtype='category') 

     x 
0 good 
1 bad 
2 good 
3 great 

Jak mogę uzyskać odwzorowanie między oryginalnymi wartościami i nowymi wartościami?

+0

możesz pisać kilka surowych danych wejściowych i kod, aby skonstruować swój df więc możemy odtworzyć dane – EdChum

Odpowiedz

21

Można utworzyć słownika mapowanie przez wyliczanie (podobny do tworzenia słownika z listy poprzez tworzenie kluczy słownik z indeksów lista):

>>> dict(enumerate(df['x'].cat.categories)) 

{0: 'bad', 1: 'good', 2: 'great'} 

aby sprawdzić, czy to działa, po prostu wydrukować bazowego całkowitej kody takie jak ten:

>>> df['x'].cat.codes 

0 1 
1 0 
2 1 
3 2 
dtype: int8 

czy goście mogą skorzystać z kategorii, do liczby całkowitej na ciąg do kategorii:

>>> df['x'].cat.codes.map(dict(enumerate(df['x'].cat.categories))).astype('category') 

uzyskać ogólne informacje na pand zmienne kategoryczne widzą official documentation

+0

to mówi ten AttributeError: obiekt „seria” nie ma atrybutu „kota ' – Bob

+1

Czy możesz być bardziej konkretny? Wygląda na to, że próbowałeś użyć 'cat' w kolumnie, która nie jest kategoryczna. Możesz sprawdzić dtypes za pomocą 'data.info()' i przekonwertować prawie każdą kolumnę na kategorię "astype (" category ")'. – JohnE

Powiązane problemy