2016-05-27 2 views
0

I-Datenrahmen müssen die IDs von Tieren und Arten gehören sie enthalten, wie unten angegebenKonvertieren eines Pandas Datenrahmen zu einem Pandas Datenrahmen mit einem anderen Stil

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

will ich es auf einen neuen Stil mit dem konvertieren Klassen in der Kopfzeile wie folgt.

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

Können Sie mir helfen, es zu tun mit Python

+0

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

Antwort

1

Siehe 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 

Und wenn Sie von "Class_" in den Spaltenüberschriften, um loszuwerden, setzen beide prefix und prefix_sep an die leere Zeichenfolge:

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

+0

Vielen Dank. Ich bekomme Float-Werte in den Spalten, wenn ich es mache. Kannst du mir dabei helfen? –

+0

Sie sind 'numpy.float64' auch für mich (obwohl meine angezeigte Ausgabe nicht '' .0''s anzeigt, die sich aus irgendeinem Grund von dir unterscheidet). Möchten Sie nur die Anzeige ändern oder möchten Sie den zugrunde liegenden Datentyp ändern? Wie auch immer, ich denke, Sie können Ihre Antwort hier finden: http://stackoverflow.com/questions/21291259/convert-floats-to-ints-in-pandas. – leekaiinthesky