2015-06-22 11 views
5

Rozważ element Dataframe. Chcę przekonwertować zestaw kolumn to_convert na kategorie.Konwersja wielu kolumn do kategorii w Pandach. zastosować?

pewnością mogę wykonać następujące czynności:

for col in to_convert: 
    df[col] = df[col].astype('category') 

ale byłem zaskoczony, że po nie zwraca dataframe:

df[to_convert].apply(lambda x: x.astype('category'), axis=0) 

co oczywiście sprawia, że ​​nie następujące prace:

df[to_convert] = df[to_convert].apply(lambda x: x.astype('category'), axis=0) 

Dlaczego retransmituje się apply (axis=0) n serii, mimo że ma działać na kolumnach jeden po drugim?

Odpowiedz

6

To właśnie stała w pana, i tak będzie w 0.17.0, zobacz problem here

In [7]: df = DataFrame({'A' : list('aabbcd'), 'B' : list('ffghhe')}) 

In [8]: df 
Out[8]: 
    A B 
0 a f 
1 a f 
2 b g 
3 b h 
4 c h 
5 d e 

In [9]: df.dtypes 
Out[9]: 
A object 
B object 
dtype: object 

In [10]: df.apply(lambda x: x.astype('category'))  
Out[10]: 
    A B 
0 a f 
1 a f 
2 b g 
3 b h 
4 c h 
5 d e 

In [11]: df.apply(lambda x: x.astype('category')).dtypes 
Out[11]: 
A category 
B category 
dtype: object 
Powiązane problemy