擅长:python、mysql、java
<p>以下是用NaN替换重复值的方法:</p>
<pre><code>df = pd.DataFrame(dict(a=[1,1,2,2,4], b=[0,5,6,6,8]), index=np.arange(5)+100)
mask = np.full_like(df, False, dtype=bool)
mask[1:] = df.iloc[1:].reset_index(drop=True) == df.iloc[:-1].reset_index(drop=True)
df[mask] = None
</code></pre>
<p>需要<code>reset_index</code>操作,否则,pandas将尝试对匹配的行索引执行<code>==</code>比较</p>
<p>原始数据帧:</p>
<pre><code> a b
100 1 0
101 1 5
102 2 6
103 2 6
104 4 8
</code></pre>
<p>之后:</p>
<pre><code> a b
100 1.0 0.0
101 NaN 5.0
102 2.0 6.0
103 NaN NaN
104 4.0 8.0
</code></pre>
<p>相反,你需要这样做</p>
<pre><code>mask = np.logical_not(mask)
</code></pre>