python-3.x - 如何在标志从 0 变为 1 之前和之后提取行

标签 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':[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()

对于您的数据样本,结果是 26

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

df.loc[[ind1, ind2]]

结果是:

   A  B  flag
2  4  4     0
6  1  1     1

关于python-3.x - 如何在标志从 0 变为 1 之前和之后提取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62724850/

相关文章:

python - 在列表列表中,有没有办法同时获取元素的行和列中的元素?

python - 如何标记 Pandas 中的重复组?

python - numpy fromfile(count = -1) 在 Mac OS 上返回零数组以获得巨大的文件大小

python - 每次按每列分组计算

python - 存在重复时替换单个字符

python - BeautifulSoup soup.select 切断子标签

python - numpy python 3.4.1 安装 : Python 3. 4 在注册表中找不到

python - 在 python 中使用列表创建 json 数组

python - 如何将 Pandas 数据框/系列数据保存为图形?

python - 有效替换应用于 numpy 数组的 vstack + concatenate