将具有多种格式的日期列更改为 datetime

Changing date column with multiple formats to datetime

提问人:Rohit Pawar 提问时间:10/25/2023 更新时间:10/25/2023 访问量:40

问:

我有一个带有日期列的数据帧。它在日期上有多种格式,主要是“YYYY-MM-DD”,但也有一些“YYYY”。MM.DD“,有些像”1968 年 10 月 26 日”。如何将它们制作成一种日期时间格式?谢谢

尝试了一些堆栈溢出解决方案,但似乎没有任何效果。

Python Pandas DataFrame 日期时间

评论


答:

1赞 HolderRoberts 10/25/2023 #1

您可以尝试名为 的第三方库。您可以在此处阅读文档dateparser

在这里,我只给大家看一些例子。

首先,只需通过以下方式安装

pip install dateparser

然后,您可以执行以下操作:

>>> import dateparser
>>> dateparser.parse('2012-10-02')    # YYYY-MM-DD
datetime.datetime(2012, 10, 2, 0, 0)
>>> dateparser.parse('2012.05.02')    # YYYY.MM.DD
datetime.datetime(2012, 5, 2, 0, 0)
>>> dateparser.parse('1968 October 26')  # Other format 
datetime.datetime(1968, 10, 26, 0, 0)

dateparser.parse返回 Python standard ,您可以轻松地将其转换为所需的任何格式。datetime.datetime

此外,我认为如果您发布“一些堆栈溢出解决方案”和结果可能会更好,以便我们可以为您提供一些建议。

0赞 user19077881 10/25/2023 #2

解析器会将各种格式的字符串转换为 Pandas 日期时间/时间戳。注意 dateutil 作为 .datetime/timestamp 格式最适合 Pandas 中的持续处理。如果您确实想要一个字符串,则可以使用允许定义所需字符串格式的函数转换此格式。python-dateutilstrftime

from dateutil.parser import parse
import pandas as pd

df = pd.DataFrame({'Date': ["2023-10-23", "2011.09.26", "1968 October 26"]})

df['Date'] = df['Date'].map(parse)

print(df)

        Date
0 2023-10-23
1 2011-09-26
2 1968-10-26
0赞 mozway 10/25/2023 #3

pd.to_datetime可以从头开始处理所有这些格式,请使用以下参数:format='mixed', yearfirst=True, dayfirst=False

df['date2'] = pd.to_datetime(df['date'], format='mixed',
                             yearfirst=True, dayfirst=False)

在这种特殊情况下,您甚至可以省略:yearfirst=True

df['date2'] = pd.to_datetime(df['date'], format='mixed', dayfirst=False)

例:

              date      date2
0       1968-10-26 1968-10-26
1       1968.10.26 1968-10-26
2  1968 October 26 1968-10-26