我有一个数据框,我想在标志从 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
关于python-3.x - 如何在标志从 0 变为 1 之前和之后提取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62724850/