如何选择一排排

时间:2019-03-23 08:29:39

标签: python-3.x pandas pandas-groupby

我有多个列的数据框,如果B列具有连续的1,我想选择一堆行,并检查A列中是否有等于0.04的值,然后检查这些行,然后需要这一堆行并提取开始值和结束值这排行的A列

这是我的数据框 enter image description here

这是我想要的输出:

enter image description here

1 个答案:

答案 0 :(得分:2)

过滤器连续组.diff().abs().cumsum().bfill()不遵循特定的(x['B'].eq(1).any() and x['A'].eq(0.04).any()

agg 第一个和最后一个

随后将连续性列分组以使用agg fun提取第一行和最后一行

df['temp'] = df.B.diff().abs().cumsum().bfill()
df.groupby('temp').filter(lambda x: (x['B'].eq(1).any() and x['A'].eq(0.04).any()))\
    .groupby('temp').agg({'A':['first','last']})

出局:

A
first   last
temp        
3.0 344.0   39.9