现在有一个真正的头脑空白。
我有一个格式为[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,或者我是否缺少转换或地图步骤。
任何帮助表示赞赏!
答案 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)