擅长:python、mysql、java
<p>我们还可以创建一个字典并映射它:</p>
<pre><code>import pandas as pd
df = pd.DataFrame(dict(id=range(1,5),social=["Facebook","Twitter","Facebook","Google"]))
d = dict((k,v) for v,k in enumerate(df['social'].unique(),1))
df['groupid'] = df['social'].map(m)
print(df)
</code></pre>
<p>退货</p>
^{pr2}$
<p>或者像这样的一句话:</p>
<pre><code>df['groupid'] = df['social'].map({k:v for v,k in enumerate(df['social'].unique(),1)})
</code></pre>
<hr/>
<p><strong>计时:</strong></p>
<pre><code>%timeit df['grpId']=df.groupby('social').ngroup().add(1)
%timeit df['grpId']=pd.factorize(df['social'])[0]+1
%timeit df['grpId']=df['social'].astype('category').cat.codes.add(1)
%timeit df['groupid'] = df['social'].map(dict((k,v) for v,k in enumerate(df['social'].unique(),1)))
</code></pre>
<p>退货</p>
<pre><code>100 loops, best of 3: 1.5 ms per loop <- Wen1
1000 loops, best of 3: 493 µs per loop <- Wen2
1000 loops, best of 3: 990 µs per loop <- Wen3
1000 loops, best of 3: 802 µs per loop <- Antonvbr
</code></pre>