python - Pandas 时间序列使用相对于开始的时间

标签 python pandas

我正在从文件中读取一些 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--------------+

最佳答案

一个简单的解决方案是从索引中减去第一个索引项。这可以通过使用列表理解来完成,如果您的 Dataframe 非常大,这可能不是最好(最快)的选择。

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')

enter image description here

关于python - Pandas 时间序列使用相对于开始的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14867512/

相关文章:

Python KeyError 解析数据库结果

python - 如何从 Pandas DataFrame 中提取 URL?

python - Groupby 并使用自定义函数执行逐行计算

python - pd.to_csv 用列表设置 float_format

python - 带有 python 套接字的 HTTP 服务器

python - 正确使用range(),为什么pylint报错: range built-in referenced when not iterating

python - 编写一个使用 *args 添加列表元素的函数

python - 如何将 tkinter 与 matplotlib checkbutton 集成以更改变量?

python - 有没有最大尺寸,最大没有。列数,最大行数?

python - 检查日期是否连续