首页 > 解决方案 > Pandas 在索引上合并,但列移动了 1

问题描述

我的第一个数据框看起来像这样,df:

lastUpdated          midprice   returns
2020-05-12 00:19:10   0.000200    NaN
2020-05-12 00:19:20   0.000200  0.000000
2020-05-12 00:19:30   0.000200  0.000025
...
2020-05-12 06:56:40   0.000206  -0.000049
2020-05-12 06:56:50   0.000206  0.000000
2020-05-12 06:57:00   0.000206  0.000000

我的第二个数据框看起来像这样,df2:

                              ts         1.38259                lastUpdated
    lastUpdated         
   2020-05-12 00:19:10  1.589244e+12    3.36436     2020-05-12 00:42:32.202
   2020-05-12 00:19:20  1.589244e+12    3.34661     2020-05-12 00:42:23.399
   2020-05-12 00:19:30  1.589244e+12    3.34661     2020-05-12 00:42:23.399
   2020-05-12 00:19:40  1.589244e+12    3.15296     2020-05-12 00:40:47.384
    ...

    2020-05-12 06:59:30 1.589267e+12    35.121100   2020-05-12 06:58:24.165
    2020-05-12 06:59:40 1.589267e+12    35.121100   2020-05-12 06:58:24.165
    2020-05-12 06:59:50 1.589267e+12    35.521100   2020-05-12 06:57:31.452

我需要做的是合并数据框,如下所示:

lastUpdated          midprice   returns   1.38259

2020-05-12 00:19:10   0.000200    NaN     3.34661
2020-05-12 00:19:20   0.000200  0.000000  3.34661
2020-05-12 00:19:30   0.000200  0.000025  3.15296

....

所以列1.38259被移动了Index+1,我试图做,merge但我做不到Index+1,我不知道你是否理解我试图达到的目标......有什么帮助吗?谢谢!!

标签: pythonpandas

解决方案


您可以使用移位的列创建一个新的 df2 列,然后将其与 df1 正常合并:

df2["shifted_col"] = df2["1.38259"].shift(1)
new_df = df1.merge(df2, left_index=True, right_index=True)

推荐阅读