gpt4 book ai didi

python - 标准化 ID 列

转载 作者:行者123 更新时间:2023-11-28 22:27:10 25 4
gpt4 key购买 nike

我正在制作一个推荐系统,我想要一个评分矩阵(用户/项目)。
我的问题是数据集中只有 9066 个唯一项目,但它们的 ID 范围从1 到 165201。
所以我需要一种方法将 ID 映射到 1 到 9066 的范围内,而不是 1 到 165201。
我该怎么做?

最佳答案

考虑数据框 df

np.random.seed([3,1415])
df = pd.DataFrame(dict(
User=np.random.randint(10, size=20),
Item=np.random.randint(100, size=20)
))
print(df)

Item User
0 27 0
1 77 2
2 54 7
3 39 3
4 23 8
5 84 7
6 37 0
7 99 6
8 87 8
9 37 6
10 63 0
11 25 2
12 11 0
13 71 4
14 44 9
15 70 7
16 4 3
17 71 2
18 63 4
19 86 3

使用unique获取唯一值并构建映射字典

u = df.Item.unique()
m = dict(zip(u, range(len(u))))

然后使用map 生成重新配置的列

df.assign(Item=df.Item.map(m))

Item User
0 0 0
1 1 2
2 2 7
3 3 3
4 4 8
5 5 7
6 6 0
7 7 6
8 8 8
9 6 6
10 9 0
11 10 2
12 11 0
13 12 4
14 13 9
15 14 7
16 15 3
17 12 2
18 9 4
19 16 3

或者我们可以用 pd.factorize

完成同样的事情
df.assign(Item=pd.factorize(df.Item)[0])

Item User
0 0 0
1 1 2
2 2 7
3 3 3
4 4 8
5 5 7
6 6 0
7 7 6
8 8 8
9 6 6
10 9 0
11 10 2
12 11 0
13 12 4
14 13 9
15 14 7
16 15 3
17 12 2
18 9 4
19 16 3

关于python - 标准化 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com