擅长:python、mysql、java
<p>有几种方法,但我是这样做的:</p>
<ol>
<li>使用一个简单的<code>cumsum</code>技巧确定一组连续的数字</li>
<li>使用<code>groupby</code>+<code>transform</code>来确定每组的大小</li>
<li>确定阈值内的NAN组</li>
<li>用布尔索引过滤掉它们。在</li>
</ol>
<p/>
<pre><code>k = 3
i = df.a.isnull()
m = ~(df.groupby(i.ne(i.shift()).cumsum().values).a.transform('size').le(k) & i)
df[m]
a
0 36.45
1 35.45
5 37.21
6 35.63
7 36.45
8 34.65
9 31.45
12 36.71
13 35.55
14 NaN
15 NaN
16 NaN
17 NaN
18 37.71
</code></pre>
<p>如果需要单调递增的整数索引,可以在末尾执行<code>df = df[m]; df.reset_index(drop=True)</code>步骤。在</p>