python - pd.to_datetime 上的未知字符串格式
问题描述
我有一个列日期如下的数据集:
cod date value
0 1O8 2015-01-01 00:00:00 2.1
1 1O8 2015-01-01 01:00:00 2.3
2 1O8 2015-01-01 02:00:00 3.5
3 1O8 2015-01-01 03:00:00 4.5
4 1O8 2015-01-01 04:00:00 4.4
5 1O8 2015-01-01 05:00:00 3.2
6 1O9 2015-01-01 00:00:00 1.4
7 1O9 2015-01-01 01:00:00 8.6
8 1O9 2015-01-01 02:00:00 3.3
10 1O9 2015-01-01 03:00:00 1.5
11 1O9 2015-01-01 04:00:00 2.4
12 1O9 2015-01-01 05:00:00 7.2
列dtypes
日期是一个对象,用于在我需要将日期列类型更改为数据时间之后应用一些功能。我尝试了不同的解决方案,例如:
pd.to_datetime(df['date'], errors='raise', format ='%Y-%m-%d HH:mm:ss')
pd.to_datetime(df['date'], errors='coerce', format ='%Y-%m-%d HH:mm:ss')
df['date'].apply(pd.to_datetime, format ='%Y-%m-%d HH:mm:ss')
但错误只是一样的:
TypeError: Unrecognized value type: <class 'str'>
ValueError: Unknown string format
直接的事情是,如果我将 te 函数应用于数据集样本,该函数会正确响应,但如果我将其应用于所有数据集,则会退出错误。在数据中没有缺失值,并且所有值的 dtype 都相同。
我该如何解决这个错误?
解决方案
存在三个问题:
pd.to_datetime
并且pd.Series.apply
不能就地工作,因此您的解决方案不会修改您的系列。转换后重新分配。- 您的第三个解决方案需要
errors='coerce'
保证没有错误。 - 对于时间组件,您需要使用以 . 开头的特定字符串格式
%
。
所以你可以使用:
df = pd.DataFrame({'date': ['2015-01-01 00:00:00', '2016-12-20 15:00:20',
'2017-08-05 00:05:00', '2018-05-11 00:10:00']})
df['date'] = pd.to_datetime(df['date'], errors='coerce', format='%Y-%m-%d %H:%M:%S')
print(df)
date
0 2015-01-01 00:00:00
1 2016-12-20 15:00:20
2 2017-08-05 00:05:00
3 2018-05-11 00:10:00
在这种特殊情况下,格式是标准的,可以省略:
df['date'] = pd.to_datetime(df['date'], errors='coerce')
推荐阅读
- apache-kafka - 无法使用 Alpakka 中的 Transactional.Sink 向 Kafka 主题生成消息,但我看到启用了幂等生产者
- python - 在字典中排序
- postgresql - 保存在 ReactiveCrudRepository 中,不插入或更新记录
- wordpress - WP 文件管理器 - 无法查看 PDF
- python - 为什么等待之后的代码没有被执行?
- mysql - 并发读/写 MySQL EF Core
- python - 优惠券收集器在 python 中使用纸牌的问题
- javascript - 在wordpress中使用ajax发布输入数据并将它们插入数据库的最佳方法是什么?
- javascript - Mongoose isModified 和 isNew
- angular - 等到第二个 Observable 发出