在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')
答案 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