2016-02-02 10 views
5

Mam dataframe pandy z dwoma indeksamiZmień Pandy indeks typ danych na MultiIndex

       Column1 
indexA indexB       
1001  aaa      1 
     bbb      1 
     ccc      1 
     ddd      1 

stworzonych przez

pd.read_sql(sql=sql, index_col=['indexA', 'indexB']) 

MySQL czyta w indexB jako Unicode i chciałbym, aby przekształcić go na sznurku . Moim celem jest przestawienie tabeli i podanie nazw w kolumnach indexB. Kiedy zrobić to z wartościami unicode uzyskać następujące nazwy kolumn:

� � � � � � � � � 

gdy uruchomiony

pd.read_sql(sql=sql, index_col=['indexA', 'indexB']).unstack().fillna(0) 

EDIT: Komentarz zaproponował następujący:

df = pd.read_sql(sql) 
df['indexB'] = df['indexB'].astype(str) 
df = df.set_index(('indexA', 'indexB'), drop=True) 

który jest miła praca nad moim problemem (dziękuję). Byłoby miło wiedzieć, czy można to zrobić podczas inicjalizacji.

+0

Czy próbowałeś 'df ['indexB'] = df ['indexB']. –

+1

Nie sądzę, że można uzyskać dostęp do takich indeksów. Powyższe zwraca 'KeyError: 'indexB''' – Sal

+2

Dobrze, przepraszam, potrzebujesz' df = pd.read_sql (sql); df ['indexB'] = df ['indexB']. astype (str); df = df.set_index (('indexA', 'indexB'), drop = True)) ' –

Odpowiedz

0

indeks można skasować przed zmianą typu.

Powiązane problemy