[英]How to groupby by consective 1s in column in pyspark and keep groups with specific size
[英]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.