合并两个时间序列与偏移量?

时间:2015-06-10 16:59:36

标签: datetime pandas

我有两个包含时间序列数据的文件,如下所示:

file_A.csv:
t,x,y,z
00:00:00,1,1,1
00:00:01,2,2,2
00:00:02,3,3,3
00:00:03,4,4,4

file_B.csv:
t,x,y,z
00:00:00,5,5,5
00:00:01,6,6,6
00:00:02,7,7,7

并希望将它们合并以获得:

t,x,y,z
00:00:00,1,1,1
00:00:01,2,2,2
00:00:02,3,3,3
00:00:03,4,4,4
00:00:04,5,5,5
00:00:05,6,6,6
00:00:06,7,7,7

基本上,我想将数据集N + 1的“t”偏移到数据集N的最后一个“t”值。

我该怎么做? combine_first不是我想要的:它只是合并了两列。

1 个答案:

答案 0 :(得分:0)

需要猜测你问题中的一些东西(确切的时间格式,最初排序的时间,增量必须是固定的),但这是一般的想法。

从数据帧开始:

import pandas as pd
from StringIO import StringIO
import numpy as np
a = pd.read_csv(StringIO('t,x,y,z\n00:00:00,1,1,1\n00:00:01,2,2,2\n00:00:02,3,3,3\n00:00:03,4,4,4'))
b = pd.read_csv(StringIO('t,x,y,z\n00:00:00,5,5,5\n00:00:01,6,6,6\n00:00:02,7,7,7'))

转换为时间并排序(可能会跳过最后一部分):

a.t = pd.to_datetime(a.t)
a.sort(columns=[a.t.name], inplace=True)
b.t = pd.to_datetime(b.t)
b.sort(columns=[b.t.name], inplace=True)

每次b增加它与b中的第一次+ a中的最后一次加上1秒的差异。

b.t = b.t - b.t[0] + a.t.values[-1] + np.timedelta64(1, 's')

最后,concat:

pd.concat([a, b])

(请注意,此处的时间现在已满datetime,即带有日期。)