如何在DataFrame上应用Series.value_counts()? [英] How to apply Series.value_counts() on DataFrame?
本文介绍了如何在DataFrame上应用Series.value_counts()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在DataFrame中,我想计算每一列的值并将这些值用作索引。
In a DataFrame i would like to count the values of each column and use the values as index.
我想转一下:
I would like to turn this:
Q1 Q2 Q3
Strongly agree Agree Undecided
Undecided Agree More or less disagree
Strongly agree Agree Undecided
Strongly agree Strongly Disagree Disagree
More or less agree Undecided Strongly disagree
此内容:
Q1 Q2 Q3
Strongly agree 3 0 0
Agree 0 3 0
More or less agree 1 0 0
Undecided 1 1 2
More or less disagree 0 0 1
Disagree 0 0 1
Strongly disagree 0 1 1
大熊猫怎么可能?
推荐答案
如果您坚持使用 value_counts
,则可以使用 stack
和 groupby
事先,然后在取消堆叠
value_counts >:
If you insist on value_counts
, you can use stack
and groupby
beforehand and then call value_counts
before unstacking
:
df.stack().groupby(level=[1]).value_counts().unstack(0, fill_value=0)
Q1 Q2 Q3
Agree 0 3 0
Disagree 0 0 1
More or less agree 1 0 0
More or less disagree 0 0 1
Strongly Disagree 0 1 0
Strongly agree 3 0 0
Strongly disagree 0 0 1
Undecided 1 1 2
另一种选择是使用融化
和数据透视表
:
(df.melt()
.pivot_table(columns='variable', index='value', aggfunc='size', fill_value=0))
variable Q1 Q2 Q3
value
Agree 0 3 0
Disagree 0 0 1
More or less agree 1 0 0
More or less disagree 0 0 1
Strongly Disagree 0 1 0
Strongly agree 3 0 0
Strongly disagree 0 0 1
Undecided 1 1 2
< hr>
使用交叉表
的解决方案:
v = df.melt()
pd.crosstab(v['value'], v['variable'])
variable Q1 Q2 Q3
value
Agree 0 3 0
Disagree 0 0 1
More or less agree 1 0 0
More or less disagree 0 0 1
Strongly Disagree 0 1 0
Strongly agree 3 0 0
Strongly disagree 0 0 1
Undecided 1 1 2
这篇关于如何在DataFrame上应用Series.value_counts()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文