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

时间:2017-09-06 11:28:26

标签: 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

1 个答案:

答案 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