pandas DataFrame存入到excel中和从excel中读取出来时的不同

       在写一个自动化小程序的时候,遇到了一个小bug,找了老半天也没找到问题在哪里,后来才发现问题出现在pandas从excel中读存取数据时。

       例如,一个excel文件是这样的:

pandas DataFrame存入到excel中和从excel中读取出来时的不同_第1张图片

       用Python pandas模块将excel中数据读出来是这样,会将表中的所有数据作为columns中的数据,并自动的给DataFrame添加一个从0-n-1(n为数据的行)的index。 

pandas DataFrame存入到excel中和从excel中读取出来时的不同_第2张图片
     

        现在我们将这个DataFrame存入到excel中去。

pandas DataFrame存入到excel中和从excel中读取出来时的不同_第3张图片

      存进去的时候我们发现,它会将index也储存在excel中去,并且作为单独的一列储存在最左边。

 

之后我们再将 ooo.xlsx中的数据用pandas读取出来。

pandas DataFrame存入到excel中和从excel中读取出来时的不同_第4张图片

       我们发现pandas照样将最左边的index读取出来了并没有单独在最左边加上一列。但是我现在做个修改,在excel表格中最左边的index上面加个name。

pandas DataFrame存入到excel中和从excel中读取出来时的不同_第5张图片

然后我再像上面一样读取出来。

pandas DataFrame存入到excel中和从excel中读取出来时的不同_第6张图片

        我们发现刚才加个名字的index会做为单独的一个列被读取出来,并且增加了一个新的从0到n-1的index。

        如果想把你想读出来时设备ID是index,只需要增加一个参数(index_col)会默认把第一列做为index。

   pandas DataFrame存入到excel中和从excel中读取出来时的不同_第7张图片

 

       从上面的例子可以看出,从Excel中读取文件时,如果想把第一列做为index,把excel中的第一列的名字(第一个值)弄成空或者加index_col = 0 参数,否则pandas会把excel中的所有内容做为列。 

     把DataFrame存储到Excel中去的时候,如果index有name,excel会把index的位置放到第一列并且高度和其他列齐平,如果index没有名字则会把index正常存储到excel中去。

你可能感兴趣的:(知识点总结)