程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

使用字符串中的字符将字符串转换为日期时间

发布于2022-10-06 22:15     阅读(269)     评论(0)     点赞(1)     收藏(1)


我有一个像这样的字符串格式:2021-10-30 08:59:20 (PST)

我的代码是:pd.to_datetime(dftest, format='%Y-%m-%d %H:%M:%S (%Z)')

错误是:

time data '2021-10-30 11:57:07 (PDT)' does not match format '%Y-%m-%d %H:%M:%S (%Z)' (match)

我猜它与(PST)有关,因为从另一个数据源来看,如果没有它,这种转换可以正常工作。我假设这里缺少一些非常简单的东西


解决方案


#1。简单的方法

你为什么不删除'(PST)'?

如果您只考虑数据集中的 PST 时间,您可以简单地执行以下操作:

df['time'] = '2021-10-30 08:59:20 (PST)'
df['time'] = df['time'].apply(lambda x: x[:-6])  # removing ' (PST)'
df['test'] = pd.to_datetime(df['test'], format='%Y-%m-%d %H:%M:%S', utc=True) + timedelta(hours=8)

我删除了“(PST)”并将其转换为带有 UTC 时区的日期时间,然后我添加了 8 小时以使其成为 PST 时区。

  • 太平洋标准时间 (PST) 为 UTC-8。
  • 太平洋夏令时间 (PDT) 为 UTC-7。

或者您可以使用特定的时区,例如 tz='Europe/Berlin',请参阅: https ://pandas.pydata.org/docs/reference/api/pandas.Series.dt.tz_convert.html

#2。进阶方式

通过使用dateparser模块(https://dateparser.readthedocs.io/en/latest/),您可以处理来自任何时区的日期时间数据,例如 PST、EST 等:

import datetime
import dateparser  # pip install dateparser

data = ['2021-10-30 08:59:20 (PST)', '2021-10-30 08:59:20 (EST)']
df = pd.DataFrame(data, columns=['time'])
df['time'] = df['time'].apply(dateparser.parse)
print(df)
df['UTC_time'] = df['time'].apply(lambda x: x.astimezone(datetime.timezone.utc))
print(df)
                        time                  UTC_time
0  2021-10-30 08:59:20-08:00 2021-10-30 16:59:20+00:00
1  2021-10-30 08:59:20-05:00 2021-10-30 13:59:20+00:00


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1793560/7bf7cc9d1cfe822c23b1/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)