Python PANDES基于滚动周期测试值的再现性

Python PANDES基于滚动周期测试值的再现性,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,基于上述数据帧,我正在尝试解决以下问题: 在(比如)5天的时间内,我想检查ColN\u ext值是否按组显示在特定行的前后ColN i、 e.我正在尝试创建一个标志: df['flag']=[NaN,0,1,NaN,NaN]。任何帮助都将不胜感激。我可以通过定义自定义函数来做到这一点: import pandas as pd import numpy as np df = pd.DataFrame() df['ColN']=['AAA', 'AAA', 'AAA', 'AAA', 'ABC']

基于上述数据帧,我正在尝试解决以下问题: 在(比如)5天的时间内,我想检查
ColN\u ext
值是否按组显示在特定行的前后
ColN

i、 e.我正在尝试创建一个标志:
df['flag']=[NaN,0,1,NaN,NaN]
。任何帮助都将不胜感激。

我可以通过定义自定义函数来做到这一点:

import pandas as pd
import numpy as np
df = pd.DataFrame()
df['ColN']=['AAA', 'AAA', 'AAA', 'AAA', 'ABC']
df['ColN_dt']=['03-01-2018', '03-04-2018', '03-05-2018', \
           '03-08-2018', '03-12-2018']
df['ColN_ext']=['A', 'B', 'B', 'B', 'B']
df['ColN_dt'] = pd.to_datetime(df['ColN_dt'])
将numpy导入为np
作为pd进口熊猫
flag_list=[]
def create_标志(dt、lookupdf):
stdt=dt-lkfwd
enddt=dt+lkfwd
bckset_ext=set(lookupdf.loc[(lookupdf['ColN_dt']>=stdt)&\
(lookupdf['ColN_dt']dt)和\
(lookupdf['ColN_dt']
import numpy as np
import pandas as pd

flag_list = []

def create_flag(dt, lookupdf):
    stdt = dt - lkfwd
    enddt = dt + lkfwd
    bckset_ext = set(lookupdf.loc[(lookupdf['ColN_dt'] >= stdt) & \
                 (lookupdf['ColN_dt'] < dt)]['ColN_ext'])
    fwdset_ext = set(lookupdf.loc[(lookupdf['ColN_dt'] > dt) & \
                 (lookupdf['ColN_dt'] <= enddt)]['ColN_ext'])
    flag_list.append(bool(bckset_ext.intersection(fwdset_ext)))
    return None

# Define the rolling days
lkfwd = pd.Timedelta(days=5)
df = pd.DataFrame()
df['ColN']=['AAA', 'AAA', 'AAA', 'AAA', 'AAA', 'AAA', 'AAA', 'ABC']
df['ColN_dt']=['03-12-2018', '03-13-2018', '03-13-2018', '03-01-2018', '03-05-2018', '03-04-2018', '03-08-2018', '02-04-2018']
df['ColN_ext']=['A', 'B', 'A', 'A', 'B', 'B', 'C', 'A']

df['ColN_dt'] = pd.to_datetime(df['ColN_dt'])
dfs = df.sort_values(by=['ColN', 'ColN_dt']).reset_index(drop=True)

dfg = dfs.groupby('ColN')

for _, grpdf in dfg:
    grpdf['ColN_dt'].apply(create_flag, args=(grpdf,))

dfs['flag'] = flag_list