python - 数据透视表和计数

标签 python pandas pivot-table

我有一个数据集表明谁在哪些商店购物。

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()创建一个IDStore的条件表,然后计算其转置和矩阵乘积本身,它应该产生你需要的东西:

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 访问了商店 BC,我想对应的单元格应该是 2 而不是 3:

关于python - 数据透视表和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40635373/

相关文章:

python - Benders Decomposition algorithm中如何将master的当前解转化为子问题约束?

python - 根据值在 df 中创建包含星期几和星期几的列

python - 从 pandas 数据透视表重新排序多索引中的级别?

python - 存储随机状态

python - 在 SQLAlchemy 中删除父项后删除子项

mysql - 如何在pandas中使用to_sql

python - 如何选择根据 pandas 中的前一行和下一行条件过滤的行并将它们放入空 df 中?

pandas - 如何在函数内将变量分配给合并的 Pandas 数据框

vba - 如何对不同工作表上的多个数据透视表中相应字段的行总计求和?

java - 如何在 ZK 中调整数据透视表中的列大小