2017-03-02 2 views
2

Im folgenden Code habe ich eine Zeichenfolge in einen DataFrame gelesen, aber obwohl die Header der Eingabezeichenfolge Zahlen sind, werden sie als Zeichenfolgen '1', '2' eingelesen. Gibt es eine Möglichkeit, sie als Zahlen zu lesen oder sie später in Zahlen umzuwandeln?Wie konvertiert man Spaltennamen eines DataFrames von String in Integer?

import pandas as pd 
from StringIO import StringIO 


string_input = " 1 2\n10 0.1 0.2\n20 0.1 0.2" 
data = pd.read_table(StringIO(string_input), sep='\s+') 
print data 
print data.columns 

     1 2 
10 0.1 0.2 
20 0.1 0.2 

Index([u'1', u'2'], dtype='object') # the columns names are of type str!! 
+0

Sie müssten das dtype: 'data.columns = data.columns.astype (int)' – EdChum

Antwort

3

Sie können dies tun, als Nachbearbeitungsschritt mit astype(int):

In [86]: 
string_input = " 1 2\n10 0.1 0.2\n20 0.1 0.2" 
data = pd.read_table(io.StringIO(string_input), sep='\s+') 
print (data) 
print (data.columns.astype(int)) 
​ 
     1 2 
10 0.1 0.2 
20 0.1 0.2 
Int64Index([1, 2], dtype='int64') 

ich persönlich würde String-Spalten bevorzugen, da sie weniger zweideutig werden, wenn IMO Indizierung beim Lesen und Schreiben von Code, wie dabei df['col_name'] wird zur Gewohnheit, und wenn Sie einen Standard int64 Index haben, dann ist df.loc[some_int] unzweideutig

Verwandte Themen