读取csv文件到`DataFrame`时如何指定索引的`dtype`?

时间:2015-04-22 09:14:12

标签: python pandas

在python 3.4.3和Pandas 0.16中,如何将索引的dtype指定为str? 以下代码是我尝试过的:

In [1]: from io import StringIO

In [2]: import pandas as pd

In [3]: import numpy as np

In [4]: fra = pd.read_csv(StringIO('date,close\n20140101,10.2\n20140102,10.5'), index_col=0, dtype={'date': np.str_, 'close': np.float})

In [5]: fra.index
Out[5]: Int64Index([20140101, 20140102], dtype='int64')

1 个答案:

答案 0 :(得分:6)

看起来param index_col=0优先于dtype param,如果你放弃index_col param,那么你可以在set_index之后调用In [235]: fra = pd.read_csv(io.StringIO('date,close\n20140101,10.2\n20140102,10.5'), dtype={'date': np.str_, 'close': np.float}) fra Out[235]: date close 0 20140101 10.2 1 20140102 10.5 In [236]: fra = fra.set_index('date') fra.index Out[236]: Index(['20140101', '20140102'], dtype='object')

index_col

另一种方法是放弃set_index参数,只需在read_csv返回的df上调用In [237]: fra = pd.read_csv(io.StringIO('date,close\n20140101,10.2\n20140102,10.5'), dtype={'date': np.str_, 'close': np.float}).set_index('date') fra.index Out[237]: Index(['20140101', '20140102'], dtype='object') ,这样它就变成了一行:

0.17.0

<强>更新

这是针对版本{{1}}

bug