先直接给答案:configdata = pd.read_csv(savepath, encoding='utf-8', index_col=0)。

然后我们展开来说明:

首先下面这个图片是原始csv数据

1、第一列问题

上述图片可以看到,因为csv文件自带第一列序号,如果我们直接用pd.read_csv读取就会将第一列的序号也认为是一列,然后这列没有列名,所以就默认赋了一个Unnamed。所以就得到如下图片:

解决办法很简单,就是指定第一列为index(即设置参数index_col=0,其默认值是None),具体实现如下:

configdata = pd.read_csv(savepath, index_col=0)。

2、编码问题

这里可以注意到我把encoding参数去掉了,因为默认编码就是utf8的,如果我换成gbk会咋样?看看结果:

这样就报错了,会出现UnicodeDecodeError这个错误,告诉你gbk codec can’t decode。所以保存的文件编码格式也要注意。

3、列名问题

接着再讲讲,假如第一行不是列名(即原数据没有保存列名),直接是数值,该怎么处理。解决方法就是指定无表头就行(即设置header=None,其默认值是infer):

configdata = pd.read_csv(savepath, header=None, index_col=0)

可以看到,默认给的列名是数字,如果想直接给定也行,指定参数names即可:

4、第一行问题

假如第一行列名我不想要(即不想读取),该怎么处理。pd提供了一个参数叫skiprows,你只要设置你不想读取的行号即可:

configdata = pd.read_csv(savepath, index_col=0, skiprows=[0])

5、指定原始列的数据类型

假如第一列是身份证号、股票代码或者卡号,但直接读取会变成数字类型,导致数字不完成,该怎么处理。pd提供了一个数据类型参数叫dtype,我们可以指定某列(假如身份证号所在列名为code)为字符型即可:

dtype = {“code”: str}  # 其中code为列名 configdata = pd.read_csv(savepath, index_col=0, dtype=dtype)

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: