我有一个数据集表明谁在哪些商店购物。
ID Store
1 C
1 A
2 A
2 B
3 A
3 B
3 C
我可以使用数据透视表来确定购物者去其他商店的频率吗?我在想一个 3X3 矩阵,其中的列和行表示有多少人去了两家商店。
Desired output
A B C
A 3 2 2
B 2 3 1
C 2 1 3
最佳答案
可以用pd.crosstab()
创建一个ID
和Store
的条件表,然后计算其转置和矩阵乘积本身,它应该产生你需要的东西:
mat = pd.crosstab(df.ID, df.Store)
mat.T.dot(mat)
#Store A B C
#Store
# A 3 2 2
# B 2 2 1
# C 2 1 2
注意:由于只有两个 ID 访问了商店 B
和 C
,我想对应的单元格应该是 2 而不是 3:
关于python - 数据透视表和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40635373/