python - 在 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,
这里有什么问题,有没有办法解决它而不必修剪所有列值?
解决方案
Python 的文件对象将自动转换\r\n
为\n
文本模式。read_csv
使用它自己的文件处理,它确实会看到\r\n
,所以如果你通过lineterminator="\n"
它,它实际上只会修剪那个字符。
如果根本不传lineterminator
参数,它会猜测行尾样式。您还可以传入文件对象而不是路径。这可能会减慢速度,但它会给您提供与直接阅读时相同的转换行为。
推荐阅读
- python - 在简单的 django-admin 应用程序中找不到媒体文件
- html - Bootstrap 5 选项卡导航在 Firefox 和 Internet Explorer 中不起作用
- json - 在 Terraform 中从 Json 解码生成 Markdown 文件
- node.js - 使用 Node.JS 从二进制响应生成损坏的 Zip 文件
- arrays - 使用 Laravel(或普通 SQL)在 JSON 列中搜索,其中键包含由单个空格分隔的值
- anaconda - 无法为 Anaconda spyder 加载 swrast
- python - 线程不工作?获取 typeerror 'bool' 对象不可调用
- javascript - ReactJS:表单中的单选按钮
- php - 使用 Laravel API 调用的 Docker 响应时间很慢
- heroku - Heroku Scheduler 每天执行任务失败