2017-03-02 59 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]是明确的