Pandas: 移动一列直到另一列值 = True

Pandas: shift one column until other column value = True

我有这样一个数据框:

df = pd.DataFrame(data={
    'date': ['2021-01-01', '2021-01-02','2021-01-03','2021-01-04'],
    'order': [False, False, True, True]
})

而且我想要一个新列,其中包含下一个订单 = True 的列的偏移日期。所以数据框看起来像这样:

df_new = pd.DataFrame(data={
    'date': ['2021-01-01', '2021-01-02','2021-01-03','2021-01-04'],
    'order': [False, False, True, True],
    'shifted_date': ['2021-01-03','2021-01-03','2021-01-04',np.nan]
})

您可以使用 where, fill backwards with bfill, and shift:

保留真值
df['shifter_date'] = df['date'].where(df['order']).bfill().shift(-1)

输出:

         date  order shifter_date
0  2021-01-01  False   2021-01-03
1  2021-01-02  False   2021-01-03
2  2021-01-03   True   2021-01-04
3  2021-01-04   True          NaN