Python 3.x 标志从0变为1时如何提取前后行

Python 3.x 标志从0变为1时如何提取前后行,python-3.x,pandas,numpy,dataframe,pandas-groupby,Python 3.x,Pandas,Numpy,Dataframe,Pandas Groupby,我有一个数据帧,我想在标志从0变为1之前提取2行,并获取值“B”最小的行,同时在标志1之后提取两行,并获取最小值为“B”的行 df=pd.DataFrame({'A':[1,3,4,7,8,11,1,15,20,15,16,87], 'B':[1,3,4,6,8,11,1,19,20,15,16,87], 'flag':[0,0,0,0,1,1,1,0,0,0,0,0]}) df_out=pd.DataFrame({'A':[

我有一个数据帧,我想在标志从0变为1之前提取2行,并获取值“B”最小的行,同时在标志1之后提取两行,并获取最小值为“B”的行

df=pd.DataFrame({'A':[1,3,4,7,8,11,1,15,20,15,16,87],
                 'B':[1,3,4,6,8,11,1,19,20,15,16,87],
                 'flag':[0,0,0,0,1,1,1,0,0,0,0,0]})

df_out=pd.DataFrame({'A':[4,1],
                     'B':[4,1],
                     'flag':[0,1]})

要查找两行感兴趣的索引,请运行:

ind1 = df[df.flag.shift(-1).eq(0) & df.flag.shift(-2).eq(1)].index[0]
ind2 = df[df.index > ind1].B.idxmin()
对于您的数据样本,结果是2和6

然后,要使用这些索引检索,请运行:

df.loc[[ind1, ind2]]
结果是:

   A  B  flag
2  4  4     0
6  1  1     1

请发布预期输出和reason@Aditya.Kommu添加了您的新列条件是什么?还有A栏?不清楚,你能澄清一下你想提取什么或进一步解释一下吗?很难理解这个输出来自哪里