我希望能够从包含许多零的集合中选择可能包含少量零的值的子集。例如:
输入:
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
答案 0 :(得分:0)
正如GLR指出的那样,你无法使用它。 如果您有一个熊猫系列,您可以创建一个新变量,其中连续值的数量与shift和cumsum的组合作为石斑鱼。有了它,您可以过滤掉具有连续出现阈值的零。
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