Проблемы времени с датой, пандами и часовым поясом: AttributeError: объект datetime.timezone не имеет атрибута _utcoffset - PullRequest
0 голосов
/ 22 февраля 2019

Вот игрушечный пример того, что я пытаюсь сделать:

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'

Что я делаю не так?

1 Ответ

0 голосов
/ 22 февраля 2019

В основном это от @AndyHayden answer , но один из вариантов - преобразовать datetime.datetime в str и преобразовать обратно в метку времени с учетом часового пояса, используя 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)

Возвраты:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...