获取 pandas 中假人的滞后日期
Get lagged dates for a dummy in pandas
我有以下类型的数据框:
dummy1 ret
Date Index
1998-01-01 AAPL US 0.0 0.000
AEX 0.0 0.000
AMZN US 0.0 0.000
AS51 0.0 0.000
AS51 1Y 100 VOL BVOL 0.0 NaN
... ...
2016-12-29 W A Comdty 0.0 NaN
WIV 0.0 0.007
WZ1 Comdty 0.0 0.005
XLE US 0.0 -0.002
ZARUSD Curncy 0.0 0.018
变量 dummy1 在特定日期为 1,对于 Multiindex 的 Index
层中包含的各种标识符并不总是相同,否则为零。我的目标是创建一个新的虚拟变量(或指示变量),比如 dummy2,它在前一个工作日 dummy1 等于 1 时为 1。因此,dummy2 必须在 dummy1 等于 1 的前一天等于 1。我该怎么做?如果我必须提取 dummy1 等于 1 的日期列表,使用 pd.offest.BusinessDays(n=1)
可能是一个想法,但我担心的是那样我会失去对数据帧索引的跟踪,这是至关重要的,因为,上面提到,dummy1不是在同一时间(即日期)为Index
.
的不同值的1
我实际上找到了一个基于 shift 方法的非常方便和优雅的解决方案。如果 df
是我们的数据框:
df.reset_index(inplace=True)
df['dummy2']=df.groupby(['Index'])['dummy1'].shift(-1)
df.set_index(['Date', 'Index'], inplace=True)
通过这种方式,我可以简单地在 dummy1 的日期前一天移动,以跟踪 Multiindex
的 Index
层中的差异
我有以下类型的数据框:
dummy1 ret
Date Index
1998-01-01 AAPL US 0.0 0.000
AEX 0.0 0.000
AMZN US 0.0 0.000
AS51 0.0 0.000
AS51 1Y 100 VOL BVOL 0.0 NaN
... ...
2016-12-29 W A Comdty 0.0 NaN
WIV 0.0 0.007
WZ1 Comdty 0.0 0.005
XLE US 0.0 -0.002
ZARUSD Curncy 0.0 0.018
变量 dummy1 在特定日期为 1,对于 Multiindex 的 Index
层中包含的各种标识符并不总是相同,否则为零。我的目标是创建一个新的虚拟变量(或指示变量),比如 dummy2,它在前一个工作日 dummy1 等于 1 时为 1。因此,dummy2 必须在 dummy1 等于 1 的前一天等于 1。我该怎么做?如果我必须提取 dummy1 等于 1 的日期列表,使用 pd.offest.BusinessDays(n=1)
可能是一个想法,但我担心的是那样我会失去对数据帧索引的跟踪,这是至关重要的,因为,上面提到,dummy1不是在同一时间(即日期)为Index
.
我实际上找到了一个基于 shift 方法的非常方便和优雅的解决方案。如果 df
是我们的数据框:
df.reset_index(inplace=True)
df['dummy2']=df.groupby(['Index'])['dummy1'].shift(-1)
df.set_index(['Date', 'Index'], inplace=True)
通过这种方式,我可以简单地在 dummy1 的日期前一天移动,以跟踪 Multiindex
的Index
层中的差异