熊猫:处理数据透视表中的布尔

时间:2015-10-07 17:08:29

标签: python pandas pivot-table

现在有一个真正的头脑空白。

我有一个格式为[userid],[q1],[q2],[q3],[q4]的DataFrame(每个q。列都是dtype boolean)。

   q1    q2     q3    q4     userid
0  True  False  True  False  1
1  True  True   False False  2
2  False False  True  True   3
3  True  True   True  True   4
4  False False  True  True   5
5  True  True   False False  6 

我有一段时间试图找出如何对数值进行转动或分组,而不必为每列单独执行此操作。

df['q1'].value_counts()将按预期返回值:

False    7138
True     2768
dtype: int64

我想要达到这个目标,而且我无法到达那里:

        q1    q2    q3
True    600   45    700
False   245   800   145

不确定我是否需要将布尔值转换为int,或者我是否缺少转换或地图步骤。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

IIUC您可以致电apply并通过value_counts

In [13]:
df.ix[:,:'q3'].apply(pd.Series.value_counts)

Out[13]:
       q1  q2  q3
True    4   3   4
False   2   3   2

正如@DSM已指出您是否包含所有True / False的列,然后它会为不存在的值插入NaN,在这种情况下您可以调用{{1像这样:

fillna(0)