2016-05-27 5 views
0

У меня есть кадр данных, содержащий идентификаторы животных и типов, которым они принадлежат, как указано нижеПреобразование кадра панды данных в кадре данных панд с другим стилем

ID Class 
1 1 
2 1 
3 0 
4 4 
5 3 
6 2 
7 1 
8 0 

Я хочу превратить его в новый стиль с классов в строке заголовка следующим образом.

ID 0 1 2 3 4 
1  1   
2  1   
3 1    
4     1 
5    1 
6   1  
7  1   
8 1    

Можете ли вы помочь мне сделать это с питоном

+0

См. 'Get_dummies()': http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html – leekaiinthesky

ответ

1

См get_dummies():

>>> print df 

    ID Class 
0 1  1 
1 2  1 
2 3  0 
3 4  4 
4 5  3 
5 6  2 
6 7  1 
7 8  0 

>>> df2 = pd.get_dummies(df, columns=['Class']) 
>>> print df2 

    ID Class_0 Class_1 Class_2 Class_3 Class_4 
0 1  0  1  0  0  0 
1 2  0  1  0  0  0 
2 3  1  0  0  0  0 
3 4  0  0  0  0  1 
4 5  0  0  0  1  0 
5 6  0  0  1  0  0 
6 7  0  1  0  0  0 
7 8  1  0  0  0  0 

И если вы хотите, чтобы избавиться от «Class_» в заголовке столбца, установите как prefix и prefix_sep до пустой строки:

df2 = pd.get_dummies(df, columns=['Class'], prefix='', prefix_sep='')

+0

Большое спасибо. Я получаю значения float в столбцах, когда я это делаю. Можете ли вы мне помочь? –

+0

Они тоже «numpy.float64» (хотя мой отображаемый вывод не показывает «.0'» s, который по какой-то причине отличается от вас). Вы просто хотите изменить отображение или хотите изменить базовый тип данных? В любом случае, я думаю, вы можете найти свой ответ здесь: http://stackoverflow.com/questions/21291259/convert-floats-to-ints-in-pandas. – leekaiinthesky