python - 获取 Pandas 交叉表中的每个元素

标签 python pandas crosstab contingency

我有下面给出的数据集:

a,b,c
1,1,1
1,1,1
1,1,2
2,1,2
2,1,1
2,2,1

我用 pandas 创建了交叉表:

 cross_tab = pd.crosstab(index=a, columns=[b, c], rownames=['a'], colnames=['b', 'c'])

我的交叉表作为输出给出:

b        1     2
c        1  2  1
a        
1        2  1  0
2        1  1  1

我想针对给定的每个 a、b 和 c 值迭代此交叉表。我怎样才能获得诸如 cross_tab[a=1][b=1, c=1] 之类的值?谢谢。

最佳答案

您可以使用 slicers :

a,b,c = 1,1,1
idx = pd.IndexSlice
print (cross_tab.loc[a, idx[b,c]])
2

您还可以通过 DataFrame.unstack reshape df , reorder_levels然后使用 loc :

a = cross_tab.unstack().reorder_levels(('a','b','c'))
print (a)
a  b  c
1  1  1    2
2  1  1    1
1  1  2    1
2  1  2    1
1  2  1    0
2  2  1    1
dtype: int64

print (a.loc[1,1,1])
2

关于python - 获取 Pandas 交叉表中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45534584/

相关文章:

python - MySQL : BLOB/TEXT column 'id' used in key specification without a key length"的 Django 迁移错误

python - 在执行一些额外操作的同时将数据帧重新采样为新数据帧

Pandas,n 个组合中的 k 个与乘积和

python - 获取中位数对应的索引

python - 使用列表理解生成素数列表

python - 将 connection_factory 指定给 SQLAlchemy 的 create_engine()

python - 向通过 pool.map 调用的函数添加状态——如何避免酸洗错误

postgresql - 使用 PostgreSQL 9.3 的动态数据透视查询

SQL:是否有一种巧妙的方法可以在不使用内部查询或聚合函数的情况下在数据透视列中显示文本数据?

postgresql - 如何在 postgres 的组中使用多个过滤器?