擅长:python、mysql、java
<p>可以使用索引将第一个数组从<code>factorize</code>、<code>zip</code>展开并转换为<code>dict</code>:</p>
<pre><code>cols = ['P1','P2']
a = (pd.factorize(df[cols].values.ravel()))
d = dict(zip(a[1][a[0]], a[0]+1))
print (d)
{'d': 4, 'b': 2, 'c': 3, 'a': 1}
df[cols] = (a[0]+1).reshape(-1, len(cols))
print (df)
A P1 P2
2 3 1 2
2 4 2 3
3 5 3 4
3 6 1 3
</code></pre>
<p><strong>细节</strong>:</p>
<pre><code>print (a)
(array([0, 1, 1, 2, 2, 3, 0, 2], dtype=int64), array(['a', 'b', 'c', 'd'], dtype=object))
print (a[1][a[0]])
['a' 'b' 'b' 'c' 'c' 'd' 'a' 'c']
print (a[0] + 1)
[1 2 2 3 3 4 1 3]
</code></pre>