您可以通过在 pandas 中使用 pivot_table 来实现此目的。
import pandas as pd
data = {"Users": [1,2,3,4,5,1,2,5,1,2,4,5,2,3,4,5,4,5],
"Items":
['A','A','A','A','A','B','B','B','C','C','C','C','D','D','D','D','E','E']}
users_items_joined = pd.DataFrame(data, columns = ["Users", "Items"])
users_items_joined["count"] = 1
您现在将获得类似于下图所示的内容,
Users Items count
0 1 A 1
1 2 A 1
2 3 A 1
3 4 A 1
4 5 A 1
5 1 B 1
6 2 B 1
7 5 B 1
8 1 C 1
9 2 C 1
10 4 C 1
11 5 C 1
12 2 D 1
13 3 D 1
14 4 D 1
15 5 D 1
16 4 E 1
17 5 E 1
您还可以从数据库中检索实际表并将其转换为 pandas 数据框,然后对其应用以下函数以获得您期望的用户项矩阵。
user_item_matrix = users_items_joined.pivot_table('count', 'Users', 'Items')
print(user_item_matrix)
上面的代码将在您提供的图像中准确给出您所要求的内容。
Items A B C D E
Users
1 1.0 1.0 1.0 NaN NaN
2 1.0 1.0 1.0 1.0 NaN
3 1.0 NaN NaN 1.0 NaN
4 1.0 NaN 1.0 1.0 1.0
5 1.0 1.0 1.0 1.0 1.0