Python|Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题
背景
最近在处理用户评论数据时,从Linux服务器上面用pandas导出的csv文件,下载到自己的Windows电脑,再用本地pandas读取时发现数据行数不一致的情况,比如在Linux服务器上面数据一共有10行,但是用自己本地电脑pandas读取时确大于10行。
【Python|Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题】问题出现的具体场景:
公司Linux服务器上面安装的有Jupyter notebook,在自己本地电脑输入网址是可以直接访问并使用,而且很方便上传、下载文件,对于Linux服务器小白来说很方便,省去了ssh连接Linux服务器的过程。
遇到的这个问题是通过本地电脑连接到Linux服务器Jupyter notebook处理了一些数据(用户评论文本数据),然后导出到csv文件,下载到自己的Windows电脑,然后使用本地的python环境读取数据,发现数据行数不一致的问题。
问题查找
首先找出了从哪一行开始出现串行,查看具体的文本数据,发现在文本数据里面出现特殊转义字符\r
,于是豁然开朗,Linux的换行符为\n
,而Windows的换行符为\r\n
,所以在文本里面出现\r
字符时,与Windows换行符有冲突,pandas读取数据时出现数据行数不一致问题。
解决方法
在pandas读取csv数据时,可利用参数lineterminator
,明确指定该参数后,可以解决该问题
pd.read_csv('test.csv',lineterminator='\n')
具体可以看看
pandas.to_csv
这个参数的解释![Python|Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题](https://img.it610.com/image/info10/121172d409fa40a7bb85a794c1163419.png)
文章图片
pandas.to_csv
案例复现 Linux服务器上面的数据
![Python|Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题](https://img.it610.com/image/info10/de541a7ffa144a49aacb7e65dea3fd24.jpg)
文章图片
linux服务器上面的数据
下载后用Windows来读取该数据
![Python|Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题](https://img.it610.com/image/info10/01476a4d506540e791d58d1999ad7390.jpg)
文章图片
windows读取数据
可以看出,如果不加
lineterminator
参数的话,数据行数会不一致,加了参数后,数据行数保持一致。由于Linux与Windows两个系统的换行符不一样,因此大家在处理数据时可以利用 lineterminator
参数来避免这样的问题,分享出来供大家参考历史相关文章
- Python pandas数据计数函数value_counts
- Python pandas 数据无法正常分列