首页 > 解决方案 > 在 pandas 中添加行终止符最终会添加另一个 \r

问题描述

我可以使用熊猫默认值将 csv 文件很好地加载到熊猫数据框中:

df = pd.read_csv(file)

>>> df
   distance  recession_velocity
0   # not a row                 NaN
1         0.032               170.0
2         0.034               290.0
3         0.214              -130.0

但是,一旦我添加lineterminator,程序似乎就乱套了:

df = pd.read_csv(file, lineterminator='\n')
       distance recession_velocity\r
0   # not a row                   \r
1         0.032                170\r
2         0.034                290\r
3         0.214               -130\r

该文件确实有一个\n行分隔符:

>>> print(repr(open('/Users/david/example.csv').read()))
'distance,recession_velocity\n# not a row,\n0.032,170\n0.034,290\n0.214,-130\n0.263,

这里有什么问题,有没有办法解决它而不必修剪所有列值?

标签: pythonpython-3.xpandas

解决方案


Python 的文件对象将自动转换\r\n\n文本模式。read_csv使用它自己的文件处理,它确实会看到\r\n,所以如果你通过lineterminator="\n"它,它实际上只会修剪那个字符。

如果根本不传lineterminator参数,它会猜测行尾样式。您还可以传入文件对象而不是路径。这可能会减慢速度,但它会给您提供与直接阅读时相同的转换行为。


推荐阅读