将随机字符串转换为 python 中的日期时间

convert random string to datetime in python

我提取了日期格式为 28-12-2019 19:13 +07:00 的数据,但 Pandas 未将其识别为日期时间。如何使用列名 creation_date 创建新列并添加正确的日期时间格式。

我试过了但是错误


data = 'data.xlsx'
df = pd.read_excel(data)

df['creation_date'] = pd.to_datetime(df['date'].str[:2] + '-' + df['date'].str[4:2] + '-' + df['date'].str[7:4])

print(df)

我希望在 excel 中识别格式,即 12/28/2019 08:13:00 PM。 +1 小时,因为我的格林威治标准时间是 +8

我已经为单个字符串编写了以下解决方案。在您的情况下,您需要针对整个数据框列对其进行调整。

首先,您需要将包含日期和时间的字符串转换为datetime对象。

您可以使用以下代码执行此操作:

import datetime
Date = "28-12-2019 19:13 +07:00"
datetimeObj = datetime.datetime.strptime(Date, "%d-%m-%Y %H:%M %z")

这会给你一个像这样的 datetime 对象:

datetime.datetime(2019, 12, 28, 19, 13, tzinfo=datetime.timezone(datetime.timedelta(seconds=25200)))

接下来您需要做的是,将此 datetime 对象转换为您首选的时区。

为此,您可以使用以下代码:

datetimeObj.astimezone(ZoneInfo('Europe/London'))

注:

  1. 为了演示,我考虑过 London。您需要相应地选择它。
  2. 以上解决方案仅在安装了 Python 3.9+ 后才有效。如果您安装了任何其他版本,请检查 this 答案。

接下来您需要做的是格式化 datetime 对象,以便它以您想要的方式表示日期和时间。

datetimeObj = datetime.datetime.strftime(datetimeObj, "%m/%d/%Y %H:%M")

这将产生以下输出:

'12/28/2019 12:13'