我有一个带有 id:s 列的 DataFrame,可以包含重复项:
>>> df['user_id'].head()
Out[3]:
0 2134
1 1234
2 4323
3 25434
4 1234
Name: user_id, dtype: int64
我如何重新映射它,以便用户 ID 从任意数字开始,根据原始数字递增?在此示例中,将从 2 开始:
>>> df['user_id'].head()
Out[3]:
0 3
1 2
2 4
3 5
4 2
Name: user_id, dtype: int64
IIUC,您想按该列中的值对 df 进行排序,首先然后使用factorize
:
In [29]:
df1 = df.reindex(df['user_id'].sort_values().index)
df1
Out[29]:
user_id
index
1 1234
4 1234
0 2134
2 4323
3 25434
In [30]:
df1['new_id'] = pd.factorize(df1['user_id'])[0] + 2
df1
Out[30]:
user_id new_id
index
1 1234 2
4 1234 2
0 2134 3
2 4323 4
3 25434 5
然后您可以使用恢复索引sort_index
:
In [31]:
df1 = df1.sort_index()
df1
Out[31]:
user_id new_id
index
0 2134 3
1 1234 2
2 4323 4
3 25434 5
4 1234 2
然后您可以覆盖或删除列,上面只是演示如何获取您想要的值
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)