获取 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 层中的差异