Python 根据值之间的时间筛选值

Python 根据值之间的时间筛选值,python,pandas,Python,Pandas,这是我的数据帧: Date Bool 0 2020-09-02 False 1 2020-09-03 False 2 2020-09-04 True 3 2020-09-05 True 4 2020-09-06 False ... 3034 2028-12-28 True 3035 2028-12-29 False 3036 2028-12-

这是我的数据帧:

             Date    Bool
0      2020-09-02   False
1      2020-09-03   False
2      2020-09-04   True
3      2020-09-05   True
4      2020-09-06   False
          ...       
3034   2028-12-28   True
3035   2028-12-29   False
3036   2028-12-30   True
3037   2028-12-31   False
3038   2029-01-01   False
如果“介于真值之间”是1个日历日或2个日历日,则我要对其进行筛选。只有第二个真值有效。
因此,它将是:

             Date    Bool   Bool_Filter
0      2020-09-02   False   False
1      2020-09-03   False   False
2      2020-09-04   True    False
3      2020-09-05   True    True
4      2020-09-06   False   False
          ...           
3034   2028-12-28   False   False
3035   2028-12-29   True    False
3036   2028-12-30   True    True
3037   2028-12-31   False   False
3038   2029-01-01   False   False
如何做到这一点?

您可以使用该功能来实现这一点

从您的示例中,不清楚当有两个以上的连续真值时会发生什么,但这与您提供的示例解决方案相匹配:

import pandas as pd
from pandas.core.series import Series
from datetime import date

data = [[date(2020, 9, 2), False], [date(2020, 9, 3), False],
        [date(2020, 9, 4), True], [date(2020, 9, 5), True],
        [date(2020, 9, 6), False], [date(2028, 12, 28), False],
        [date(2028, 12, 29), True], [date(2028, 12, 30), True],
        [date(2028, 12, 31), False], [date(2029, 1, 1), False]]

df = pd.DataFrame(data, columns=['Date', 'Bool'])

df['Bool_Filter'] = (
    df['Bool'] & \
    (df['Bool'].shift(1)
     & ((df['Date'].shift(1) - df['Date']) <= '2 days'))
) 
将熊猫作为pd导入
从pandas.core.series导入系列
起始日期时间导入日期
数据=[[日期(2020年9月2日),假],[日期(2020年9月3日),假],
[日期(2020年9月4日),正确],[日期(2020年9月5日),正确],
[日期(2020年9月6日),假],[日期(2028年12月28日),假],
[日期(2028年12月29日),正确],[日期(2028年12月30日),正确],
[日期(2028,12,31),假],[日期(2029,1,1),假]]
df=pd.DataFrame(数据,列=['Date','Bool'])
df['Bool_Filter']=(
df['Bool']和\
(df['Bool'].移位(1)

&((df['Date'].shift(1)-df['Date'])这回答了你的问题吗?我现在还不清楚这个问题~@BEN_-YO我编辑了问题
df['Bool_filter']=(df['Date'].diff(),介于(最小,最大)和df['Bool']
。编辑
min
max
作为您选择的时间增量。请参阅@deponovo min和max-变量是什么?整数,如0、1或2(天数)?