我有两个带有日期索引的数据帧df1
和df2
,如何将两个数据帧组合在一起,使得df1
的当前日期索引应获取下一个索引的值df2
中的。
import pandas as pd
from datetime import datetime, timedelta
a=pd.date_range(datetime(2018,12,31)-timedelta(weeks=54),datetime(2018,12,31),freq='Q')
b =[100,200,300,400,500]
df1 = pd.DataFrame({'col1':b},index=a)
a=pd.date_range(datetime(2018,12,31)-timedelta(weeks=90),datetime(2018,12,31),freq='Q')
c= [-1,0,1,2,3,4,5]
df2 = pd.DataFrame({'col2':c},index=a)
>>df1
col1
2017-12-31 100
2018-03-31 200
2018-06-30 300
2018-09-30 400
2018-12-31 500
>>df2
col2
2017-06-30 -1
2017-09-30 0
2017-12-31 1
2018-03-31 2
2018-06-30 3
2018-09-30 4
2018-12-31 5
有什么办法得到像下面这样的输出
>>df1
col1 col2
2017-12-31 100 2
2018-03-31 200 3
2018-06-30 300 4
2018-09-30 400 5
2018-12-31 500 NaN
我尝试合并,但是它将匹配索引中相同索引的取值
答案 0 :(得分:2)
IIUC
pd.concat([df1,df2.shift(-1)],axis=1)
Out[219]:
col1 col2
2017-12-31 100 2.0
2018-03-31 200 3.0
2018-06-30 300 4.0
2018-09-30 400 5.0
2018-12-31 500 NaN
答案 1 :(得分:1)
先使用join
,然后再使用shift
。
df = df1.join(df2)
df.col2 = df.col2.shift(-1)
df
col1 col2
2017-12-31 100 2.0
2018-03-31 200 3.0
2018-06-30 300 4.0
2018-09-30 400 5.0
2018-12-31 500 NaN