在下面的代码中,我将一个字符串读入 DataFrame,但即使输入字符串的标头是数字,它们也会作为字符串读入'1', '2'
。有没有办法将它们作为数字读取,或者随后将它们转换为数字?
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!!
您可以使用以下方法将其作为后处理步骤来执行astype(int) http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.astype.html:
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]
是明确的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)