背景:
我有多个csv文件中的时序数据,每个文件包含不同种类的传感器功能。我正在尝试将这些文件中的功能合并到一个通用的时间戳索引中。
我遇到的麻烦是,记录一行数据的时间戳与某个常规间隔不对应,而是与传感器更新其值的时间对应。
问题:
我正在寻找一种以类似“前向填充”的方式将这些文件合并在一起的方法,如果数据集在给定的时间戳记中没有条目,则它将填充先前条目的值。
例如,如果我的两个数据文件是
A.csv
time X1 X2
00 1 2
01 3 4
02 5 6
03 7 8
B.csv
time X3 X4
00 10 11
02 12 13
我想要一个带有值的最终数据集
time X1 X2 X3 X4
00 1 2 10 11
01 3 4 10 11
02 5 6 12 13
03 7 8 12 13
我可以使用我的张量流估计器。
我曾尝试将不同的CsvDatasets合并在一起,但是似乎无法“暂停”某个值上的数据集迭代器以传播它,并以所需的方式将其与其他数据集迭代器合并。
(我知道我可以通过在时间索引上进行外部联接然后执行pd.ffill来对pandas进行此操作,但是我相信我将需要在内存中使用整个数据集,而我想避免这样做。由于时间索引不规则,因此也不要选择将数据分块加载。)
有人知道创建这样的管道的最佳方法吗?
答案 0 :(得分:0)
您可以利用pd.concat([A, B], axis=1)
默认将A
和B
的索引进行合并,然后ffill
的结果来进行熊猫合并
示例:
A = pd.read_csv('A.csv')
B = pd.read_csv('B.csv')
A = A.set_index('time')
B = B.set_index('time')
res = pd.concat([A, B], axis=1).ffill()
res
res
的打印结果是:
X1 X2 X3 X4
time
0 1 2 10.0 11.0
1 3 4 10.0 11.0
2 5 6 12.0 13.0
3 7 8 12.0 13.0