我的数据框是:
df = pd.DataFrame({
'ID':['27637', '27637', '27637', '27637', '89283', '89283', '89283', '89283'],
'Country':['UK', 'Poland', 'Poland', 'Poland', 'China', 'China', 'India', 'India']})
我通过df['Dense_Rank'] = df.groupby('ID')['Country'].rank(method='dense')
添加了一个附加列
然而,我不喜欢27637组,因为英国标记为2.0,而波兰标记为1.0。由于英国首先出现,我预计它将标记为1.0,而波兰标记为2.0。89283组看起来不错。
以下是我的预期结果:
| 识别号|国家|密集_等级|预期_结果|
| - ------|- ------|- ------|- ------|
| 小行星27637|联合 Realm |2.0版|1.0分|
| 小行星27637|波兰|1.0分|2.0版|
| 小行星27637|波兰|1.0分|2.0版|
| 小行星27637|波兰|1.0分|2.0版|
| 小行星89283|中国|1.0分|1.0分|
| 小行星89283|中国|1.0分|1.0分|
| 小行星89283|印度|2.0版|2.0版|
| 小行星89283|印度|2.0版|2.0版|
1条答案
按热度按时间zdwk9cvp1#
一个选项是使用
pandas.factorize
:输出: