擅长:python、mysql、java
<h3>与<code>pd.factorize</code></h3>
<p>重点是捕获<code>factorize</code>的两个输出,并在整数编码和<code>nunique</code>计算中使用它们,而无需<code>factorize</code>两次。你知道吗</p>
<p>运行此命令以获取编码和唯一值</p>
<pre><code>e, u = zip(*map(pd.factorize, map(df.get, df)))
</code></pre>
<hr/>
<p>将编码转换为数据帧</p>
<pre><code>pd.DataFrame([*zip(*e)], df.index, df.columns)
0 1 2
0 0 0 0
1 1 0 1
2 2 1 2
3 3 2 3
4 4 3 4
</code></pre>
<hr/>
<p>将唯一值的长度转换为序列</p>
<pre><code>pd.Series([*map(len, u)], df.columns)
0 5
1 4
2 5
dtype: int64
</code></pre>
<hr/>
<p>总之,两个对象的赋值是</p>
<pre><code>e, u = zip(*map(pd.factorize, map(df.get, df)))
df_ = pd.DataFrame([*zip(*e)], df.index, df.columns)
c = pd.Series([*map(len, u)], df.columns)
</code></pre>
<p>对于那些使用传统Python的人来说,没有<code>[*it]</code>语法</p>
<pre><code>e, u = zip(*map(pd.factorize, map(df.get, df)))
df_ = pd.DataFrame(list(zip(*e)), df.index, df.columns)
c = pd.Series(list(map(len, u)), df.columns)
</code></pre>