擅长:python、mysql、java
<p>如果您不再需要编码器,那么可以使用<code>pd.factorize</code>,它将所有np.nan转换为<code>-1</code>,您需要将其放回<code>np.nan</code>:</p>
<pre><code>import pandas as pd
import numpy as np
from sklearn.preprocessing import OrdinalEncoder
X = pd.DataFrame({'x1':['a','b',np.NaN],'x2':[np.NaN,'c','d']})
x1 x2
0 a NaN
1 b c
2 NaN d
X.apply(lambda x:x.factorize()[0]).replace(-1,np.nan)
x1 x2
0 0.0 NaN
1 1.0 0.0
2 NaN 1.0
</code></pre>