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。谢谢你的帮助!!!非常感谢蒂尔曼。使用世界设置而不是数据帧是我的错误。很抱歉给你带来了困惑。您是否介意根据数据帧结构重新制定解决方案?提前谢谢。我刚刚在我的数据帧上尝试了你的解决方案,我得到了以下结果:如果你有两个非零系列,它总是将两者结合在一起。我要写一个新的问题,让它更清楚。谢谢你的帮助。