首页 > 解决方案 > Pandas 合并两个时间序列不匹配的数据库

问题描述

尝试在 Python 中合并 2 个 DB,具有一个时间范围,但时间值不同。С = pd.merge_asof(A, B, on='time') 给出 TypeError: No matching signature found

一个

时间 计数器0 计数器1
2021-05-27 19:09:00 0.0172 0.0207
2021-05-27 19:09:15 0.0483 0.0517
2021-05-27 19:09:30 0.0621 0.0655
2021-05-27 19:09:45 0.0897 0.0931
2021-05-27 19:10:15 0.155 0.155

时间 速度 C D
2021-05-27 19:09:13 1 1
2021-05-27 19:09:13 0 2 2
2021-05-27 19:09:14 0.42 2 3
2021-05-27 19:09:14 0 3 4
2021-05-27 19:09:15 0.4 5
2021-05-27 19:10:05 0.1 2 3

我希望 C 看起来像:

C

时间 计数器0 计数器1 速度 C D
2021-05-27 19:09:00 0.0172 0.0207 不适用 不适用 不适用
2021-05-27 19:09:13 不适用 不适用 不适用 1 1
2021-05-27 19:09:13 不适用 不适用 0 2 2
2021-05-27 19:09:14 不适用 不适用 0.42 2 3
2021-05-27 19:09:14 不适用 不适用 0 3 4
2021-05-27 19:09:15 0.0483 0.0517 0.4 不适用 5
2021-05-27 19:09:30 0.0621 0.0655 不适用 不适用 不适用
2021-05-27 19:09:45 0.0897 0.0931 不适用 不适用 不适用
2021-05-27 19:10:05 不适用 不适用 0.1 2 3
2021-05-27 19:10:15 0.155 0.155 不适用 不适用 不适用

标签: pythonpandasdatabasedataframecsv

解决方案


您在寻找外部连接吗?

c = a.merge(b, on='time', how='outer').sort_values('time')

                 time  counter0  counter1  rate    C    D
0 2021-05-27 19:09:00    0.0172    0.0207   NaN  NaN  NaN
5 2021-05-27 19:09:13       NaN       NaN   NaN  1.0  1.0
6 2021-05-27 19:09:13       NaN       NaN  0.00  2.0  2.0
7 2021-05-27 19:09:14       NaN       NaN  0.42  2.0  3.0
8 2021-05-27 19:09:14       NaN       NaN  0.00  3.0  4.0
1 2021-05-27 19:09:15    0.0483    0.0517  0.40  NaN  5.0
2 2021-05-27 19:09:30    0.0621    0.0655   NaN  NaN  NaN
3 2021-05-27 19:09:45    0.0897    0.0931   NaN  NaN  NaN
9 2021-05-27 19:10:05       NaN       NaN  0.10  2.0  3.0
4 2021-05-27 19:10:15    0.1550    0.1550   NaN  NaN  NaN

推荐阅读