我有下面给出的数据集:
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/