Как использовать карту и лямбда-функцию для преобразования столбца в pandas в datetime? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть столбец с таким временем, как 9: 3: 15 (без ведущих нулей) (3 минуты и 15 секунд c после 9). Я хотел бы нанести это (без даты, просто время) на ось x. поэтому я попробовал следующий код:

def data_vis(dayN):
    plt.subplots_adjust(bottom=0.2)
    plt.xticks( rotation=25 )
    ax=plt.gca()
    #ax.xaxis_date()
    xfmt = md.DateFormatter('%H:%MM:%S')
    ax.xaxis.set_major_formatter(xfmt)
    plt.plot_date(md.date2num(dayN["Time Stamp"]),dayN["Temperature(deg C)"])
    plt.show()

Я получил следующую ошибку:

DateFormatter обнаружил значение x = 0, что является недопустимой датой; обычно это происходит из-за того, что вы не проинформировали ось о том, что она строит даты, например, с помощью ax.xaxis_date ()

с включенным ax.xaxis_date() я получил следующую ошибку.

Объект 'str' не имеет атрибута 'toordinal'

Поскольку эти столбцы были «str», я подумал об использовании

pd.to_datetime(day2["Time Stamp"], format = '%H:%M:%S)

, но это приводит к следующему результату:

1900-01-01 09: 51: 33

Теперь я хотел бы попробовать datetime.datetime.strptime использование карты и / или лямбда-функции для указанного выше столбца.

Любая помощь, касающаяся реализации функции карты и построения графика данных, будет действительно полезной. Также datetime.strptime поможет в решении проблемы?

спасибо,

1 Ответ

0 голосов
/ 08 мая 2020

не уверен, что здесь не так; у меня отлично работает следующее:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.dates as md
# create a dummy df...
dayN = pd.DataFrame({"Temperature(deg C)": np.random.rand(10)+20,
                     "Time Stamp": ['9:3:15','9:3:16','9:3:17','9:3:18','9:3:19',
                                    '9:3:20','9:3:21','9:3:22','9:3:23','9:3:24']})
# format to datetime, don't care about the date:
dayN["Time Stamp"] = pd.to_datetime(dayN["Time Stamp"], format='%H:%M:%S')

plt.subplots_adjust(bottom=0.2)
plt.xticks(rotation=25)
ax = plt.gca()
xfmt = md.DateFormatter('%H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot_date(md.date2num(dayN["Time Stamp"]), dayN["Temperature(deg C)"])
plt.show()

enter image description here

...