我在用Pandas做交叉统计:
a = np.array(['foo', 'foo', 'foo', 'bar', 'bar', 'foo', 'foo'], dtype=object)
b = np.array(['one', 'one', 'two', 'one', 'two', 'two', 'two'], dtype=object)
c = np.array(['dull', 'dull', 'dull', 'dull', 'dull', 'shiny', 'shiny'], dtype=object)
pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])
b one two
c dull dull shiny
a
bar 1 1 0
foo 2 1 2
但我真正想要的是以下几点:
b one two
c dull shiny dull shiny
a
bar 1 0 1 0
foo 2 0 1 2
我找到了一个变通办法,添加新列并将级别设置为新的多索引,但这似乎很困难...
有没有办法将MultiIndex传递给crosstabs函数以预定义输出列?
2条答案
按热度按时间6g8kf2rb1#
crosstab函数有一个名为dropna的参数,默认设置为True。此参数定义是否应显示空列(如一个 Flink 列)。
我试着这样称呼这个函数:
这是我得到的
希望那还是有用的。
h7wcgrx32#
我不认为有办法做到这一点,并且
crosstab
在源代码中调用pivot_table
,而源代码似乎也没有提供这一点。* 我将其作为一个问题here提出。*一个蹩脚的变通方法(可能与您已经使用的方法相同,也可能不同...):
product
太慢,下面是它的a numpy implementation。*