【问题标题】:Pandas time diff: Timestamp subtraction must have the same timezones or no timezonesPandas time diff:时间戳减法必须具有相同的时区或没有时区
【发布时间】:2021-10-17 01:54:26
【问题描述】:

当我尝试计算日期系列与今天之间的差异时,我收到 Timestamp subtraction must have the same timezones or no timezones 错误。

加载数据

raw_data = pd.read_json('resultados_finales_completos10000.json')
print(raw_data['fecha_publicacion'][0])

2017-09-24T15:04:22.000Z

将对象类型列转为日期时间

raw_data['fecha_publicacion'] =  pd.to_datetime(raw_data['fecha_publicacion'])
print(raw_data['fecha_publicacion'][0])
print(raw_data['fecha_publicacion'][0].tzinfo, type(today.tzinfo))

2017-09-24 15:04:22+00:00

UTC

然后我设置今天的值

today = datetime.now(tz=timezone.utc)
print(today)
print(today.tzinfo, type(today.tzinfo))

2021-08-13 21:31:16.031605+00:00

UTC

在这两种情况下,我都有相同的时区设置。

最后我正在尝试创建一个新列来存储时差,如下所示并得到前面提到的错误。

raw_data['meses_venta'] = today - raw_data['fecha_publicacion']

我尝试了以下帖子但没有多大成功。欢迎任何线索。提前致谢!

【问题讨论】:

  • 请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。请include a minimal data frame 作为您的 MRE 的一部分。

标签: python pandas python-datetime


【解决方案1】:

您必须设置与错误提示相同的时区或(无时区)。

一种方法:

from datetime import datetime, timezone
import pandas as pd
x = pd.to_datetime('2017-09-24T15:04:22.000Z')
today = datetime.now(tz=x.tz)

today - x # Timedelta('1419 days 06:59:48.134906')

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 2020-07-07
    • 2020-06-29
    • 2012-02-04
    • 1970-01-01
    • 2019-11-20
    • 2019-01-28
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多