繁体   English   中英

当标志列中的所有 1 并保持大小大于 2 的组时如何从数据框中获取组

[英]how to get groups from dataframe when all 1s in flag column and keep group with size greater than 2

我想提取标志为连续 1 的组,如果大小大于 2 则保留组

here is my df :
df2=pd.DataFrame({'A':[1,20,40,45,56,1,20,40,45,56],'flag':[3,2,4,1,1,3,3,1,1,1]})
print(df2)
    A  flag
0   1     3
1  20     2
2  40     4
3  45     1
4  56     1
5   1     3
6  20     3
7  40     1
8  45     1
9  56     1

output
7  40     1
8  45     1
9  56     1

有很多方法。 您可以使用 pandas 的内置功能,例如 groupby 和 where 或简单地使用以下内容。

print(df2[(df2['flag']==1) & (df2['A']>2)])

使用pandas.DataFrame.groupby一种方法:

s = df2["flag"].eq(1)
m = s.diff(1).ne(0).cumsum()
new_df = df2[s.groupby(m).transform(lambda x: x.sum()>2)]

输出:

    A  flag
7  40     1
8  45     1
9  56     1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM