如何将此日期格式解析为日期时间? Python/Pandas
How can I parse this date format into datetime? Python/Pandas
我目前的开始日期格式是 2019-09-04 16:00 UTC+3
,我正在尝试将其转换为 2019-09-04 16:00:00+0300
.
的日期时间格式
我认为可行的格式是 format='%Y-%m-%d %H:%M %Z%z'
,但是当我 运行 它时,我收到错误消息 ValueError: Cannot parse both %Z and %z
。
有谁知道要使用的正确格式,还是我应该尝试完全不同的方法?谢谢。
编辑
抱歉,我很难用语言表达我想要做什么,希望我能澄清一下。
我希望将数据框中的所有日期和时间更改为日期时间格式。
这是我尝试使用的方法,但出现了错误
df['datepicker'] = pd.to_datetime(df['datepicker'], format='%Y-%m-%d %H:%M %Z%z')
这是我目前拥有的数据样本。
datepicker
2019-09-07 16:00 UTC+2
2019-09-04 18:30 UTC+4
2019-09-06 17:00 UTC±0
2019-09-10 16:00 UTC+1
2019-09-04 18:00 UTC+3
我希望将它们转换成时间戳格式。
datepicker
2019-09-07 16:00:00+0200
2019-09-04 18:30:00+0400
2019-09-06 17:00:00+0000
2019-09-10 16:00:00+0100
2019-09-04 18:00:00+0300
当我定义如下。它按您预期的那样工作。
from datetime import datetime, timedelta, timezone
UTC = timezone(timedelta(hours=+3))
dt = datetime(2019, 1, 1, 12, 0, 0, tzinfo=UTC)
timestampStr = dt.strftime("%Y-%m-%d %H:%M %Z%z")
print(timestampStr)
输出为:
2019-01-01 12:00 UTC+03:00+0300
如果您稍微调整字符串,pandas.to_datetime
应该会愉快地解析它:
import pandas as pd
df = pd.DataFrame({"datepicker":[ "2019-09-07 16:00 UTC+2", "2019-09-04 18:30 UTC+4",
"2019-09-06 17:00 UTC±0", "2019-09-10 16:00 UTC+1",
"2019-09-04 18:00 UTC+3"]})
df['datetime'] = pd.to_datetime(df['datepicker'].str.replace('±', '+'))
# df['datetime']
# 0 2019-09-07 16:00:00-02:00
# 1 2019-09-04 18:30:00-04:00
# 2 2019-09-06 17:00:00+00:00
# 3 2019-09-10 16:00:00-01:00
# 4 2019-09-04 18:00:00-03:00
# Name: datetime, dtype: object
请注意,由于混合 UTC 偏移量,该列的数据类型为 'object'(日期时间对象)。如果你愿意,你也可以直接转换为 UTC,以获得 dtype datetime[ns]:
的列
df['UTC'] = pd.to_datetime(df['datepicker'].str.replace('±', '+'), utc=True)
# df['UTC']
# 0 2019-09-07 18:00:00+00:00
# 1 2019-09-04 22:30:00+00:00
# 2 2019-09-06 17:00:00+00:00
# 3 2019-09-10 17:00:00+00:00
# 4 2019-09-04 21:00:00+00:00
# Name: UTC, dtype: datetime64[ns, UTC]
我目前的开始日期格式是 2019-09-04 16:00 UTC+3
,我正在尝试将其转换为 2019-09-04 16:00:00+0300
.
我认为可行的格式是 format='%Y-%m-%d %H:%M %Z%z'
,但是当我 运行 它时,我收到错误消息 ValueError: Cannot parse both %Z and %z
。
有谁知道要使用的正确格式,还是我应该尝试完全不同的方法?谢谢。
编辑 抱歉,我很难用语言表达我想要做什么,希望我能澄清一下。
我希望将数据框中的所有日期和时间更改为日期时间格式。
这是我尝试使用的方法,但出现了错误
df['datepicker'] = pd.to_datetime(df['datepicker'], format='%Y-%m-%d %H:%M %Z%z')
这是我目前拥有的数据样本。
datepicker
2019-09-07 16:00 UTC+2
2019-09-04 18:30 UTC+4
2019-09-06 17:00 UTC±0
2019-09-10 16:00 UTC+1
2019-09-04 18:00 UTC+3
我希望将它们转换成时间戳格式。
datepicker
2019-09-07 16:00:00+0200
2019-09-04 18:30:00+0400
2019-09-06 17:00:00+0000
2019-09-10 16:00:00+0100
2019-09-04 18:00:00+0300
当我定义如下。它按您预期的那样工作。
from datetime import datetime, timedelta, timezone
UTC = timezone(timedelta(hours=+3))
dt = datetime(2019, 1, 1, 12, 0, 0, tzinfo=UTC)
timestampStr = dt.strftime("%Y-%m-%d %H:%M %Z%z")
print(timestampStr)
输出为:
2019-01-01 12:00 UTC+03:00+0300
pandas.to_datetime
应该会愉快地解析它:
import pandas as pd
df = pd.DataFrame({"datepicker":[ "2019-09-07 16:00 UTC+2", "2019-09-04 18:30 UTC+4",
"2019-09-06 17:00 UTC±0", "2019-09-10 16:00 UTC+1",
"2019-09-04 18:00 UTC+3"]})
df['datetime'] = pd.to_datetime(df['datepicker'].str.replace('±', '+'))
# df['datetime']
# 0 2019-09-07 16:00:00-02:00
# 1 2019-09-04 18:30:00-04:00
# 2 2019-09-06 17:00:00+00:00
# 3 2019-09-10 16:00:00-01:00
# 4 2019-09-04 18:00:00-03:00
# Name: datetime, dtype: object
请注意,由于混合 UTC 偏移量,该列的数据类型为 'object'(日期时间对象)。如果你愿意,你也可以直接转换为 UTC,以获得 dtype datetime[ns]:
的列df['UTC'] = pd.to_datetime(df['datepicker'].str.replace('±', '+'), utc=True)
# df['UTC']
# 0 2019-09-07 18:00:00+00:00
# 1 2019-09-04 22:30:00+00:00
# 2 2019-09-06 17:00:00+00:00
# 3 2019-09-10 17:00:00+00:00
# 4 2019-09-04 21:00:00+00:00
# Name: UTC, dtype: datetime64[ns, UTC]