在滞后的日期时间索引上合并多索引 pandas 数据帧
Merge multiindex pandas dataframes on a lagged datetimeindex
我有困难:
- 合并两个 pandas 多索引数据帧
- 在合并中将偏移量传递给日期时间索引
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
参数,但均未成功。
这涉及重建您的索引
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
我有困难:
- 合并两个 pandas 多索引数据帧
- 在合并中将偏移量传递给日期时间索引
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
参数,但均未成功。
这涉及重建您的索引
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