日期时间, pandas 和时区出现问题:AttributeError:'datetime.timezone'对象没有属性'_utcoffset' [英] Datetime, pandas, and timezone woes: AttributeError: 'datetime.timezone' object has no attribute '_utcoffset'

查看:501
本文介绍了日期时间, pandas 和时区出现问题:AttributeError:'datetime.timezone'对象没有属性'_utcoffset'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我正在尝试做的一个玩具示例:

Here is a toy example of what I am trying to do:

import pandas as pd
import datetime
import matplotlib
matplotlib.use('agg')  # noqa
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from time import sleep

lst = []
for x in range(0, 10):
    lst.append((datetime.datetime.now(datetime.timezone.utc), x))
    sleep(1)

df = pd.DataFrame(lst, columns=['Timestamp', 'Pressure'])
df.plot(kind='line', x='Timestamp', y='Pressure')
formatter = mdates.DateFormatter('%m/%d %T %Z', tz=df.index.tz)
plt.gca().xaxis.set_major_formatter(formatter)
plt.savefig('output.png')

运行此命令时,我得到AttributeError: 'datetime.timezone' object has no attribute '_utcoffset'

When I run this, I get AttributeError: 'datetime.timezone' object has no attribute '_utcoffset'

我在做什么错了?

推荐答案

大部分是从@AndyHayden answer 上抓取的,但是一种选择是将datetime.datetime转换为str并使用pd.to_datetime

Mostly scraped this from @AndyHayden answer, but one option is to convert datetime.datetime to str and convert back to "timezone aware" timestamp using pd.to_datetime

df = pd.DataFrame(lst, columns=['Timestamp', 'Pressure'])
df['Timestamp'] = pd.to_datetime(df.Timestamp.astype(str))
ax = df.plot(kind='line', x='Timestamp', y='Pressure')
plt.show()

df = df.set_index('Timestamp')

formatter = mdates.DateFormatter('%m/%d %T %Z', tz=df.index.tz)

ax.xaxis.set_major_formatter(formatter)

返回:

这篇关于日期时间, pandas 和时区出现问题:AttributeError:'datetime.timezone'对象没有属性'_utcoffset'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆