Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 时间序列使用相对于开始的时间_Python_Pandas - Fatal编程技术网

Python 时间序列使用相对于开始的时间

Python 时间序列使用相对于开始的时间,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--------------

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

一个简单的解决方法是从索引中减去第一个索引项。这可以通过使用列表理解来实现,如果您的数据帧非常大,那么列表理解可能不是最好(最快)的选择

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


由于索引的数据类型从DatetimeIndex更改为Object,因此每一行都在单独的存储桶中打印。

太好了,谢谢。在从csv:df.date\u time=df.date\u time-df.date\u time[0]读取数据帧后,我尝试了类似的方法,错误地说“Timestamp”对象没有属性“dtype”。我现在将尝试您的解决方案。@Rutger_Kassies我看到,对df.index中的idx执行df.index=[idx-df.index[0]会将索引的数据类型更改为对象,而不是DatetimeIndex,这会更改图形输出。我将把输出图像作为一个单独的答案发布,这样你就知道发生了什么。我会调查自己来修复它,但如果你有任何线索,我会把它发布在这里。现在通过这样做来修复问题:start_t=pd.tslib.Timestamp(df.index[0].date())df.index=[pd.tslib.Timestamp(start_t+(idx-df.index[0]),用于df.index中的idx]