Python 从包含多个零的集合中选择具有几个零的值的子集

Python 从包含多个零的集合中选择具有几个零的值的子集,python,pandas,dataframe,Python,Pandas,Dataframe,我希望能够从包含多个零的集合中选择可能包含几个零的值的子集。例如: 输入: item 0 0 0 0 0 0 0 1 2 3 0 0 0 6 8 8 9 0 0 0 0 0 0 0 0 我想选择下面满足以下条件的子集:在两个无零值之间,零的总数小于10,例如3-6 请,在此方面的任何帮助都将不胜感激 提前谢谢。 顺致敬意, 卡洛 输出: item 1 2 3 0 0 0 6 8 8 9 正如GLR指出的,您不能为此使用集

我希望能够从包含多个零的集合中选择可能包含几个零的值的子集。例如:

输入:

item
 0
 0
 0
 0
 0
 0
 0
 1
 2
 3
 0
 0
 0
 6
 8
 8
 9
 0
 0 
 0
 0
 0
 0
 0
 0
我想选择下面满足以下条件的子集:在两个无零值之间,零的总数小于10,例如3-6

请,在此方面的任何帮助都将不胜感激

提前谢谢。 顺致敬意, 卡洛

输出:

item
 1
 2
 3
 0
 0
 0
 6
 8
 8
 9

正如GLR指出的,您不能为此使用集合。 如果您有一个pandas系列,您可以创建一个新变量,该变量具有连续值的数量,并将shift和cumsum组合作为grouper。这样,您就可以使用阈值过滤掉连续出现的零

threshold = 4
consecutives = series.groupby((series!=series.shift(1)).cumsum()).transform('count')
series = series[(series!=0)|(consecutives<threshold)]
Out[18]: 
7     1
8     2
9     3
10    0
11    0
12    0
13    6
14    8
15    8
16    9

此问题没有意义,因为集合中的项目没有排序请参见此处:。如果要解决此问题,应使用列表或numpy数组。@GLR,我使用的是dataframe。谢谢你的帮助!!!非常感谢蒂尔曼。使用世界设置而不是数据帧是我的错误。很抱歉给你带来了困惑。您是否介意根据数据帧结构重新制定解决方案?提前谢谢。我刚刚在我的数据帧上尝试了你的解决方案,我得到了以下结果:如果你有两个非零系列,它总是将两者结合在一起。我要写一个新的问题,让它更清楚。谢谢你的帮助。