pandas parse_data出现异常时,自动跳过

本文介绍使用Pandas处理含有异常日期格式的CSV文件时遇到的问题及解决方法。通过调整日期解析器中errors参数的值,可以跳过或转换不符合规范的日期数据。

当处理原始数据时,出现下面的错误:

id,name,date
0,a,2020/01/01
0,b,2020/01/01
0,c,2020/01/01
0,d,2020/01/01
0,e,2020/01/01
0,f,9999/01/01

pandas进行处理:

data = pandas.read_csv(file, sep=";", encoding="ISO-8859-1", parse_dates=["date"],  date_parser=lambda x: pandas.to_datetime(x, format="%d.%m.%Y"))

但是运行时报错,意思是out of bonds timestamp

我们目前的做法是,需要跳过异常的行,

需要添加下面的行

date_parser=lambda x: pd.to_datetime(x, errors="coerce")

errors参数共有三种赋值,默认的值为‘raise’,出现不符合规范的解析时就会报错。

  • 可以将errors参数赋值为‘coerce’,在解析的过程中将出错的时间格式设置为NaT。
  • 如果不想处理错误的时间格式,可以将errors赋值为‘ignore’,这样就还是原来的格式。

errors{‘ignore’, ‘raise’, ‘coerce’}, default ‘raise’

  • If ‘raise’, then invalid parsing will raise an exception.
  • If ‘coerce’, then invalid parsing will be set as NaT.
  • If ‘ignore’, then invalid parsing will return the input.
c:\users\1\desktop\未命名1.py:52: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format. source_time = pd.to_datetime(main_damage_df.iloc[:, 0]) Traceback (most recent call last): File D:\anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec exec(code, globals, locals) File c:\users\1\desktop\未命名1.py:81 main_damage, tower_damage = load_and_align_damage_data(damage_file, n_turbines, target_time) File c:\users\1\desktop\未命名1.py:52 in load_and_align_damage_data source_time = pd.to_datetime(main_damage_df.iloc[:, 0]) File D:\anaconda3\Lib\site-packages\pandas\core\tools\datetimes.py:1067 in to_datetime values = convert_listlike(arg._values, format) File D:\anaconda3\Lib\site-packages\pandas\core\tools\datetimes.py:435 in _convert_listlike_datetimes result, tz_parsed = objects_to_datetime64( File D:\anaconda3\Lib\site-packages\pandas\core\arrays\datetimes.py:2398 in objects_to_datetime64 result, tz_parsed = tslib.array_to_datetime( File tslib.pyx:414 in pandas._libs.tslib.array_to_datetime File tslib.pyx:596 in pandas._libs.tslib.array_to_datetime File tslib.pyx:553 in pandas._libs.tslib.array_to_datetime File conversion.pyx:641 in pandas._libs.tslibs.conversion.convert_str_to_tsobject File parsing.pyx:336 in pandas._libs.tslibs.parsing.parse_datetime_string File parsing.pyx:666 in pandas._libs.tslibs.parsing.dateutil_parse DateParseError: Unknown datetime string format, unable to parse: 间(s), at position 0
07-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值