串联不同变量的交叉表

时间:2018-10-22 18:40:19

标签: python pandas concatenation python-3.6 crosstab

我有一个带有几个分类列的Pandas(0.23.4)DataFrame。

df = pd.DataFrame(np.random.choice([True, False, np.nan], (6,4)), columns = ['a','b','c','d'])

     a    b    c    d
0  NaN  1.0  NaN  NaN
1  NaN  1.0  NaN  0.0
2  1.0  NaN  1.0  NaN
3  0.0  NaN  0.0  1.0
4  NaN  1.0  NaN  NaN
5  NaN  1.0  0.0  1.0

我有两组感兴趣的列:

cross_cols = ['a', 'b']
type_cols = ['c', 'd']

我想获取每个cross_col变量与每个type_col变量的计数的交叉表({acd,以及b与{{1 }}和c)(NaN除外)并排显示。理想的结果是:

d

请注意,我对 c d 0.0 1.0 All 0.0 1.0 All a 0.0 0 0 0 1 1 2 1.0 2 1 3 1 0 1 All 2 1 3 2 1 3 b 0.0 0 0 0 0 1 1 1.0 2 1 3 2 0 2 All 2 1 3 2 1 3 abc的不同组合的计数不感兴趣,这是通过更改d的{​​{1}}和index参数。

当前我正在使用以下代码:

columns

它给出以下结果:

pd.crosstab

结果很好,但是代码很慢而且有点难看。我怀疑有一种更快,更Pythonic的方法。有没有可以完成任务的单个函数调用,还是另一个更快的解决方案?

0 个答案:

没有答案