我有一个带有id:s的colum的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
答案 0 :(得分:1)
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
然后你可以覆盖或删除一列,上面只是为了演示如何获得你想要的值
答案 1 :(得分:0)
这个问题有点令人困惑..我不确定你是想用任意数字增加用户ID,还是只想显示用户ID超过某个阈值...所以我会给出一个解决方案两个:
df [' user_id']。map(lambda x:x + 2)会给你user_ids +2
df.loc [df [' user_id']> 2]只会返回高于2的user_ids
如果您想对用户ID进行排序,您可以:
希望有所帮助!DF [' USER_ID&#39]。sort_values()