我有两个包含时间序列数据的数据框架。
Dataframe A包含时间步1的数据,索引值每次加1。
Dataframe B包含时间步长n
的数据,索引值每次递增n。
我希望做到以下几点:在数据框a中添加一列,并从数据框B中填充值,这样,如果a中该行的索引值位于B中连续索引的值之间,则为a中所有这样的行填充相同的值。
我将用下面的例子来说明:
A:
id val1
0 2
1 3
2 4
3 1
4 6
5 23
6 2
7 12
8 56
9 34
10 90
...
B:
id tval
0 1
3 5
6 9
9 34
12 3434
...
现在,我的结果应该如下所示:
A:
id val1 tval
0 2 1
1 3 1
2 4 1
3 1 5
4 6 5
5 23 5
6 2 9
7 12 9
8 56 9
9 34 34
10 90 34
...
我想为任何n
自动执行此操作。
使用merge_asof
:
df = pd.merge_asof(A, B, left_index=True, right_index=True)
print (df)
val1 tval
id
0 2 1
1 3 1
2 4 1
3 1 5
4 6 5
5 23 5
6 2 9
7 12 9
8 56 9
9 34 34
10 90 34
如果id
是列:
df = pd.merge_asof(A, B, on='id')
print (df)
id val1 tval
0 0 2 1
1 1 3 1
2 2 4 1
3 3 1 5
4 4 6 5
5 5 23 5
6 6 2 9
7 7 12 9
8 8 56 9
9 9 34 34
10 10 90 34