我遇到了困难:
DF1:
date ID Attr_1
12/31/2010 13 A
9 B
1 C
1/31/2011 13 D
9 E
1 F
DF2:
date ID Attr_2
12/31/2010 13 -0.124409
9 0.555959
1 -0.705634
1/31/2011 13 0.471078
9 0.276006
1 -0.468463
一个月的滞后Attr_2应合并到df1。期望的输出:
date ID Attr_1 Attr_2
12/31/2010 13 A nan
9 B nan
1 C nan
1/31/2011 13 D -0.124409
9 E 0.555959
1 F -0.705634
我想用:
pd.merge(df1, df2['Attr_2'], left_on = ['date', 'ID'],
right_on = [df2.index.date - pd.DateOffset(months = 1), 'ID'],
how='left')
我无法加入' date'因为它是两个dfs中的索引。我也不能像我一样减去df2 right_on
的偏移量。
我尝试在两个dfs中重置索引失败,然后将偏移量应用于right_on
参数。
答案 0 :(得分:0)
这涉及重建你的指数
df1.index = pd.MultiIndex.from_tuples([(pd.to_datetime(x[0]), x[1]) for x in df1.index])
df2.index = pd.MultiIndex.from_tuples([(pd.to_datetime(x[0])+ pd.DateOffset(months = 1), x[1]) for x in df2.index])
df1.join(df2)
Out[413]:
Attr_1 Attr_2
2010-12-31 13 A NaN
9 B NaN
1 C NaN
2011-01-31 13 D -0.124409
9 E 0.555959
1 F -0.705634