2017-03-02 92 views
2

在下面的代碼中,我將一個字符串讀入DataFrame中,但即使輸入字符串的標頭是數字,它們也會作爲字符串'1', '2'讀入。有沒有辦法以數字讀取它們,或者將它們轉換爲數字?如何將DataFrame的列名從字符串轉換爲整數?

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

你需要轉換dtype:'data.columns = data.columns.astype(int) – EdChum

回答

3

可以使用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') 

個人而言,我寧願字符串列,因爲它讀,寫代碼的時候,在做變得更加明確時,索引IMO df['col_name']成爲一種習慣,當你有一個默認的int64索引,那麼df.loc[some_int]是明確的