我的数据如下。我需要将此日期和时间合并为一列,并且需要绘制 2015 年及其相应时间的线图。 在此处输入图像描述
2 回答
2
尝试使用以下内容将您组合MultiIndex成一个DatetimeIndex:
df.set_index(pd.to_datetime(df.index.get_level_values(0) ) +
pd.to_timedelta(df.index.get_level_values(1), unit='H'),
inplace=True)
从您提供的数据来看,似乎存在差距,例如2015-01-01 09:00没有 'msg_count' 值。
要解决此问题,您可以DataFrame.reindex使用pandas.date_range并填写缺失的条目0
new_idx = pd.date_range(df.index.min(), df.index.max(), freq='H')
df.reindex(new_idx, fill_value=0, inplace=True)
要绘制 2015 年的数据,请仅使用:
df[df.index.year == 2015].plot()
于 2018-12-16T20:06:17.950 回答
0
您可以创建一个包含日期时间格式的日期的新列,然后使用matplotlib.pyplot.plot_date函数来绘制它。
import datetime as dt
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({'date': ['2018-12-12', '2018-12-12', '2018-12-13'], 'hour': [22, 23, 0], 'msg_count': [10, 20, 30]})
df['datetime'] = df.apply(
lambda x: dt.datetime.strptime(x['date'], '%Y-%m-%d')
+ dt.timedelta(hours=x['hour']),
axis=1)
plt.plot_date(df['datetime'], df['msg_count'])
plt.show()
于 2018-12-16T19:25:33.613 回答