擅长:python、mysql、java
<p>使用链式运算首先得到每个A的值_count,计算每个组的序号,然后连接回原始DF。在</p>
<pre><code>(
pd.merge(df,
df.A.value_counts().apply(lambda x: 1 if x>1 else np.nan)
.cumsum().rename('dgroup_id').to_frame(),
left_on='A', right_index=True).sort_index()
)
Out[49]:
A dgroup_id
0 foo 1.0
1 bar 2.0
2 foo 1.0
3 baz NaN
4 foo 1.0
5 bar 2.0
</code></pre>
<p>如果您需要唯一组的Nan,就不能使用int作为数据类型,这是目前pandas的一个限制。如果对唯一组设置0没有问题,可以执行以下操作:</p>
^{pr2}$