我有两个包含时间序列数据的文件,如下所示:
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不是我想要的:它只是合并了两列。
答案 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
,即带有日期。)