Pandas从csv读取数据帧,索引为字符串,而不是int

Que*_*tin 2 python numpy pandas

我的csv文件如下:

INDEX, VAL
04016170,22
04206261,11
0420677,11
Run Code Online (Sandbox Code Playgroud)

df = pd.read_csv('data.csv', index_col='INDEX')

如何强制pandas将索引读取为字符串而不是整数(以保留第一个0)?

EdC*_*ica 7

您可以传递dtype作为参数,这会将列映射到传递的dtype:

In [130]:
import io
import pandas as pd
t="""INDEX,VAL
04016170,22
04206261,11
0420677,11"""
df = pd.read_csv(io.StringIO(t), index_col='VAL', dtype={'INDEX':str})
df

Out[130]:
        INDEX
VAL          
22   04016170
11   04206261
11    0420677

In [131]:    
df.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 22 to 11
Data columns (total 1 columns):
INDEX    3 non-null object
dtypes: object(1)
memory usage: 48.0+ bytes
Run Code Online (Sandbox Code Playgroud)

编辑

好的,你可以这样做,当你明确设置index_colin时read_csv,这里有一个bug ,所以你必须首先加载csv然后set_index加载后调用:

In [134]:
df = pd.read_csv(io.StringIO(t), dtype={'INDEX':str})
df = df.set_index('INDEX')
df

Out[134]:
          VAL
INDEX        
04016170   22
04206261   11
0420677    11
Run Code Online (Sandbox Code Playgroud)