pandas 时间序列相对起始时间使用时间

3 投票
2 回答
2530 浏览
提问于 2025-04-17 15:50

我正在从一个文件中读取一些csv日志数据,并使用日期和时间字段作为数据框的索引。当我绘制时间序列图时,X轴上显示的是绝对时间。我想在X轴上显示相对于开始时间的时间。该怎么做呢?

举个例子:这是一个样本X轴:

 23:59:57--------+23:59:58----------23:59:59--------+00:00:00--------------+

我想要它像这样:

 0---------00:00:01----------00:00:02--------+00:00:03--------------+

2 个回答

2

这是我进行相对时间标准化后的输出

因为索引的数据类型从日期时间索引(DatetimeIndex)变成了普通对象,所以每一行的数据被分到了不同的组里。

4

一个简单的解决办法是从索引中减去第一个索引对应的项。可以通过列表推导式来实现,不过如果你的数据表非常大,这种方法可能不是最快的选择。

begin = pd.datetime(2013,1,5,5,53)
end = pd.datetime(2013,1,7,7,16)

rng = pd.DatetimeIndex(start=begin, end=end, freq=pd.datetools.Minute(15))
df = pd.DataFrame(np.random.randn(rng.size), index=rng)

fig, axs = plt.subplots(2,1, figsize=(15,6))
fig.subplots_adjust(hspace=.5)

df.plot(ax=axs[0])
axs[0].set_title('Original')

df.index = [idx - df.index[0] for idx in df.index]
df.plot(ax=axs[1])
axs[1].set_title('Normalized')

在这里输入图片描述

撰写回答