【问题标题】:pandas to_datetime leaves unconverted datapandas to_datetime 留下未转换的数据
【发布时间】:2020-06-19 17:04:27
【问题描述】:

我正在尝试将包含类似于“201905011”(年/月/日)的字符串的列转换为日期时间,理想情况下显示为 05-01-2019(月/日/年)。我目前正在尝试关注,但它不适合我。

pd.to_datetime(data.datetime, format = '%Y%m%d%H') 

这给我留下了错误:“ValueError:未转换的数据仍然存在:4”

我想知道如何正确地做到这一点。

【问题讨论】:

  • 什么是date.datetime 我以为你有一个字符串?无论如何pd.to_datetime('201905011',format='%Y%m%d%H') 为我工作;Timestamp('2019-05-01 01:00:00')
  • 你能发布更多数据吗,这对我有用
  • 请看:data.loc[pd.to_datetime(data.datetime, format='%Y%m%d%H', errors='coerce').isnull(), 'datetime']。这将向您显示无法转换为日期时间的值,因为它们与该格式不匹配。您可能会看到这些日期的数字过多或存在其他问题。
  • 我忘了提到我正在尝试为整个列执行此操作,其日期类似于我写的字符串,现在对其进行编辑。这会如何改变事情?
  • 我使用 ALollz 代码找出问题出在哪里,并且每隔 24 个值就会出现问题。这是因为我的数据在 00:00 的时间使用“24”而不是“0”吗?

标签: pandas


【解决方案1】:

我根据 ALollz 评论创建了一个示例。我创建了一个数据框,其中第一行是正确的,第二行最后有额外的 0。如果使用该方法,它将返回数据与指定格式不匹配的行。

import pandas as pd
df = pd.DataFrame({"datefield":["201901010","20190101010"]})
df.loc[pd.to_datetime(df.datefield, format='%Y%m%d%H', errors='coerce').isnull(), 'datefield']
1    20190101010
Name: datefield, dtype: object

【讨论】:

    猜你喜欢
    • 2021-08-06
    • 2021-11-24
    • 2020-02-09
    • 2021-10-21
    • 2016-11-26
    • 2018-04-22
    • 1970-01-01
    • 2017-01-27
    • 2019-03-01
    相关资源
    最近更新 更多