pandas(一):read_csv解决第一列Unnamed问题

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

然后我们展开来说明:

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

pandas(一):read_csv解决第一列Unnamed问题_第1张图片

1、第一列问题

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

pandas(一):read_csv解决第一列Unnamed问题_第2张图片

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

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

pandas(一):read_csv解决第一列Unnamed问题_第3张图片

 

2、编码问题

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

pandas(一):read_csv解决第一列Unnamed问题_第4张图片

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

3、列名问题

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

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

pandas(一):read_csv解决第一列Unnamed问题_第5张图片

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

4、第一行问题

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

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

你可能感兴趣的:(Python日常,pandas)