gpt4 book ai didi

python - 哪个文件导致 `dask.dataframe.read_csv` 失败?

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:44 25 4
gpt4 key购买 nike

我经常遇到的错误是

>> dd.read_csv('/tmp/*.csv', parse_dates=['start_time', 'end_time'])

Traceback (most recent call last):
...
File "/Users/brettnaul/venvs/model37/lib/python3.6/site-packages/dask/dataframe/io/csv.py", line 163, in coerce_dtypes
raise ValueError(msg)
ValueError: Mismatched dtypes found in `pd.read_csv`/`pd.read_table`.

The following columns failed to properly parse as dates:

- start_time
- end_time

This is usually due to an invalid value in that column. To
diagnose and fix it's recommended to drop these columns from the
`parse_dates` keyword, and manually convert them to dates later
using `dd.to_datetime`.

很明显我的一个文件格式不正确,但是哪个文件呢?到目前为止,我提出的最佳解决方案是:

  • 在 IPython 中重新运行相同的命令
  • %调试魔法
  • 将原始 CSV 文本示例打印到控制台
  • 找到一段独特的文本并进行 grep,直到找出有问题的文件

这对我来说似乎非常迂回,但除非我遗漏了一些明显的东西,否则回溯中似乎没有任何其他可用的识别信息。有没有更好的方法来找出哪个文件失败?使用 collection=False 并检查 Delayed 对象也可能有效,但我不确定要寻找什么。有什么方法可以使引发的异常包含一些提示,说明问题发生的位置,或者在调用 read_csv 后该信息是否不可用?

最佳答案

一种方法是在读取文件时包含文件名,推迟日期解析(仅遵循错误消息中的建议),将错误视为 NaT,并找出有问题的结果中的那些。在下面的示例中,2.csv3.csv 包含有问题的值:

In [45]: !cat 1.csv
a
2018-01-01
2018-01-02

In [46]: !cat 2.csv
a
2018-01-03
2018-98-04

In [47]: !cat 3.csv
a
2018-01-05b
2018-01-06

In [48]: !cat 4.csv
a
2018-01-07
2018-01-08

In [49]: df = dd.read_csv('*.csv', include_path_column=True)

In [50]: df['a'] = dd.to_datetime(df.a, errors='coerce')

In [51]: df[df['a'].isnull()].path.compute()
Out[51]:
1 2.csv
0 3.csv

特别是,这告诉我们 2.csv 中的第二行(索引为 1)和 3.csv 中的第一行(索引为 0)是罪魁祸首.

关于python - 哪个文件导致 `dask.dataframe.read_csv` 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53214086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com