python - 迭代捕获单个数据帧中的值计数

标签 python pandas

我有一个 pandas 数据框,看起来像这样:

id   group  gender  age_grp  status
1    1      m       over21   active
2    4      m       under21  active
3    2      f       over21   inactive

我有超过 100 列和数千行。我正在尝试创建每个列的 value_counts 的单个 pandas 数据框。所以我想要看起来像这样的东西:

                  group1
gender  m         100
        f         89
age     over21    98
        under21   11
status  active    87
        inactive  42

有人知道一种简单的方法,我可以迭代地连接原始数据集中 100 多个列中每一列的 value_counts,同时捕获列的名称作为分层索引吗?

最终我希望能够与不同组的另一个数据框合并,如下所示:

                  group1   group2
gender  m         100      75
        f         89       92
age     over21    98       71
        under21   11       22
status  active    87       44 
        inactive  42       13

谢谢!

最佳答案

这应该可以做到:

df.stack().groupby(level=1).value_counts()

id       1           1
         2           1
         3           1
group    1           1
         2           1
         4           1
gender   m           2
         f           1
age_grp  over21      2
         under21     1
status   active      2
         inactive    1
dtype: int64

关于python - 迭代捕获单个数据帧中的值计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38406897/

相关文章:

python - 从类 __init__() 调用静态方法导致 "takes 1 positional argument but 2 were given"TypeError

python - 使用 MultiIndex df (pandas) 进行 bool 索引

python - 通过另一个数据帧过滤系列/数据帧

python - 对两个 pandas 数据框列应用条件

python - 基于 YAML 数据的条件 Python for 循环

python - 我可以在 python 中使用 NLTK 从 Spacy 依赖树中找到主题吗?

python-2.7 - 将 Pandas 数据框的行转换为列

python - Pandas 将聚合与原始列进行比较

python - Pandas 在两个数字之间填充 nan

python - 使用 Python 将文件从一个目录移动到另一个目录时无法解决错误