根据两个数据框的索引将值从一个数据框填充到另一个数据框



我有两个包含时间序列数据的数据框架。

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

相关内容

最新更新