在极坐标中转换字符串时如何处理夏季和冬季的时间戳

2024-02-05

我正在尝试将字符串时间戳从我的相机放入原始文件元数据的时间戳转换为极地日期时间,但是当我同时拥有夏季和冬季时间的时间戳时,极地会抛出此错误。

ComputeError: Different timezones found during 'strptime' operation.

我如何说服它成功转换这些? (理想地处理不同时区以及从夏季到冬季的时间变化)

然后如何将这些时间戳转换回正确的本地时钟时间以供显示?

请注意,虽然时间戳字符串仅显示偏移量,但元数据中有一个 exif 字段“时区城市”以及仅包含本地(原始)时间戳的字段

import polars as plr

testdata=[
    {'name': 'BST 11:06', 'ts': '2022:06:27 11:06:12.16+01:00'},
    {'name': 'GMT 7:06', 'ts': '2022:12:27 12:06:12.16+00:00'},
]

pdf = plr.DataFrame(testdata)
pdfts = pdf.with_column(plr.col('ts').str.strptime(plr.Datetime, fmt = "%Y:%m:%d %H:%M:%S.%f%z"))

print(pdf)
print(pdfts)

看起来我需要使用 tz_convert,但我看不到如何将其添加到转换表达式中,以及相关文档页看起来只是 404到 dt_namespace 的链接已损坏 https://pola-rs.github.io/polars/py-polars/html/reference/series.html#timeseries


极地 0.16 更新

Since PR 6496 https://github.com/pola-rs/polars/pull/6496,已合并,您可以将混合偏移解析为 UTC,然后设置时区:

import polars as pl

pdf = pl.DataFrame([
    {'name': 'BST 11:06', 'ts': '2022:06:27 11:06:12.16+01:00'},
    {'name': 'GMT 7:06', 'ts': '2022:12:27 12:06:12.16+00:00'},
])

pdfts = pdf.with_columns(
    pl.col('ts').str.strptime(
        pl.Datetime(time_unit="us"), fmt="%Y:%m:%d %H:%M:%S.%f%z", utc=True)
    .dt.convert_time_zone("Europe/London")
)

print(pdfts)
shape: (2, 2)
┌───────────┬─────────────────────────────┐
│ name      ┆ ts                          │
│ ---       ┆ ---                         │
│ str       ┆ datetime[μs, Europe/London] │
╞═══════════╪═════════════════════════════╡
│ BST 11:06 ┆ 2022-06-27 11:06:12 BST     │
│ GMT 7:06  ┆ 2022-12-27 12:06:12 GMT     │
└───────────┴─────────────────────────────┘

旧版本:

您可以使用以下解决方法:删除 UTC 偏移量并本地化为预定义的时区。Note:仅当 UTC 偏移量和时区一致时,结果才是正确的。

timezone = "Europe/London"

pdfts = pdf.with_column(
    plr.col('ts')
    .str.replace("[+|-][0-9]{2}:[0-9]{2}", "")
    .str.strptime(plr.Datetime, fmt="%Y:%m:%d %H:%M:%S%.f")
    .dt.tz_localize(timezone)
)

print(pdf)
┌───────────┬──────────────────────────────┐
│ name      ┆ ts                           │
│ ---       ┆ ---                          │
│ str       ┆ str                          │
╞═══════════╪══════════════════════════════╡
│ BST 11:06 ┆ 2022:06:27 11:06:12.16+01:00 │
├╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ GMT 7:06  ┆ 2022:12:27 12:06:12.16+00:00 │
└───────────┴──────────────────────────────┘
print(pdfts)
┌───────────┬─────────────────────────────┐
│ name      ┆ ts                          │
│ ---       ┆ ---                         │
│ str       ┆ datetime[ns, Europe/London] │
╞═══════════╪═════════════════════════════╡
│ BST 11:06 ┆ 2022-06-27 11:06:12.160 BST │
├╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ GMT 7:06  ┆ 2022-12-27 12:06:12.160 GMT │
└───────────┴─────────────────────────────┘

边注: 公平起见,pandas也不处理混合 UTC 偏移量,除非您立即解析为 UTC(关键字utc=True in pd.to_datetime)。对于混合 UTC 偏移量,它会回退到使用一系列本机 Python 日期时间对象。这使得 Pandas 的很多时间序列功能都像dt访问器不可用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在极坐标中转换字符串时如何处理夏季和冬季的时间戳 的相关文章

随机推荐

  • 使用servlet,如何从数据库下载多个文件并将它们压缩以供客户端下载

    我有一个 jsp servlet Web 应用程序 客户端可以通过下拉框选择 课程 和 作业 然后单击按钮下载数据库中该课程 作业组合下列出的所有文件 servlet 代码不太工作 因为 zip 文件没有作为附件发送到浏览器 我确实有一次下
  • 如何在 Interface Builder 中输入 RGB 值?

    如何在 Interface Builder 中输入背景的 RGB 或 Hex 颜色值 我可以选择预定义的颜色 但我想手动输入 RGB 值 我可以在哪里执行此操作 单击颜色滑块图标 然后从下拉列表中选择 RGB 滑块 您还可以使用放大镜作为颜
  • 有没有办法使用 Jquery 检测跨浏览器按下后退按钮

    我有一个正在幻灯片放映的网站 当用户按下后退按钮时 我希望它返回到相册视图而不是先前的页面并阻止页面 有办法做到这一点吗 感谢您的任何帮助或建议 jQuery Address 为浏览器历史记录和 Ajax 抓取提供了强大的跨浏览器支持 ht
  • Apache Rewritemap 未被读取?

    我有一个简单的键值映射文件 它将旧用户 ID 转换为新用户 ID 目标是从旧网站拉出会员个人资料页面 并重定向到新网站 其中会员拥有新的用户 ID 我的虚拟主机配置文件是这样的
  • 更改 TabControl 未使用空间的颜色

    我想更改 TabPage 标题右侧未使用空间的颜色 我试图覆盖OnPaintBackground窗口的方法并且它正在工作 这是我使用的代码 protected override void OnPaintBackground PaintEve
  • 无法找到速度模板资源

    只是一个基于 Maven 结构的简单速度独立应用程序 这是用 Scala 编写的用于渲染模板的代码片段helloworld vm in basedir src main resources文件夹 com ggd543 velocitydem
  • Python 中的货币格式

    我希望使用 Python 将 188518982 18 等数字格式化为 188 518 982 18 我怎样才能做到这一点 See the locale https docs python org 3 library locale html
  • Excel ActiveX 列表框随着每次更新而缩小

    我有一组链接的子程序 其工作原理如下 用户在 ActiveX 文本框中键入内容 该文本框中的更改事件调用模块中的子组件 该模块子驱动器更新工作表中的命名范围 范围值驱动更新使用基于范围值的查找函数的 Excel 单元格表 表值被复制并粘贴到
  • 如何从 flutter 应用程序打开 Instagram?

    当我点击按钮时 我想切换到 Instagram 个人资料 我使用这个库网址启动器 https pub dev packages url launcher 但我只能使用网络浏览器来实现此目的 为了实现我的目标 我要做什么 要打开本机和 Web
  • 计算输入字符 - 使用 onkeyup 还是 onkeydown?

    我需要为用户设置最大字符输入 类似于 stackoverflow com 的工作方式 我计划使用 javascript 向用户提供反馈并计算字符数 仅允许提交不超过最大字符数的内容 我不打算使用 xhtml 输入属性来限制此数量 因为只要不
  • C# 中带有圆角边框的表单? [复制]

    这个问题在这里已经有答案了 我使用此代码使表单没有边框样式 this FormBorderStyle FormBorderStyle None 我需要在表格上制作圆角边缘 有简单的方法吗 我该怎么做 看看这个 http msdn micro
  • 水豚 & RSpec

    我无法让水豚成功工作 它抱怨说has text是一个未定义的方法 我创建了一个新的 Rails 3 1 项目 rails new test T Gemfile source http rubygems org gem rails 3 1 3
  • 从 Java 调用 PLSQL 过程

    下面是我的Java程序 我正在调用 PLSQL 过程来更新员工姓名 我关闭了 PLSQL 代码中的提交 以便可以从 Java 代码进行提交和回滚 但即使在我关闭自动提交并执行显式回滚之后 表中的详细信息仍然会更新 如何 我不知道 请帮忙 这
  • 我可以在没有特定 NSManagedObjectContext 的情况下创建 NSManagedObject 实例吗?

    我正在构建一个应用程序 它从 Web API 接收大量列表 并允许用户保存一些列表以供离线查看 我通常的做法是 从API获取数据 并为每个数据创建一个新的Listing对象 如果用户选择将对象保存到数据库中 但这是一个核心数据应用程序 因此
  • java中零的情况下的负号

    有没有办法在结果返回零时截断负号 使用十进制格式时 DecimalFormat df new DecimalFormat 0 0 df setRoundingMode RoundingMode HALF UP formattedValue
  • 如何使用 Django 将 HTML 页面转换为 PDF

    我有一个 Django 网络应用程序 它是一个存储账单和发票的平台 现在我正在尝试将这些账单导出为 PDF 格式 我正在使用 xhtml2pdf 但它不起作用 我正在使用此代码进行测试 http obroll com generate pd
  • 如何以编程方式禁用Android中的相机功能

    我想实用地禁用我的 Android 应用程序中的相机 在这里 我想制作一个应用程序 一旦我启动应用程序 启动和停止中有两个按钮 当我单击开始按钮时 我的应用程序将转到主屏幕 并且即使单击我的应用程序中的相机图标不会启用 并且也不会单击硬件按
  • 如何判断一个容器是否无限递归并找到其最小的唯一容器?

    我正在读书展平 不规则的 列表列表 https stackoverflow com questions 2158395 flatten an irregular list of lists in python并决定将其作为 Python 练
  • 按类型获取控件的所有子控件的列表

    我试图创建一个方法来创建一个列表 其中包含 DetalsView 的所有字符串类型的子控件的名称 我得到的最接近的是 foreach Control c in dv Controls if c is Label controlsToChec
  • 在极坐标中转换字符串时如何处理夏季和冬季的时间戳

    我正在尝试将字符串时间戳从我的相机放入原始文件元数据的时间戳转换为极地日期时间 但是当我同时拥有夏季和冬季时间的时间戳时 极地会抛出此错误 ComputeError Different timezones found during strp