python - 在列中合并类别并获得一列计数

标签 python pandas

这是一个 python pandas 问题,我需要一些帮助。

我有一个表格,我将像这样简化:

+--------+--------+--------+-----------+ |性别 |状态|年龄 |已购买 | +--------+--------+--------+------------+ |男 |内华达 |成人 |是的 | |女|内华达 |成人 |是的 | |男 |佛罗里达 |青少年 |是的 | |男 |佛罗里达 |成人 |没有 | |女|内华达 |青少年 |没有 | |女|纽约 |高级|是的 | |男 |纽约 |高级|是的 | |女|纽约 |成人 |是的 | |女|内华达 |青少年 |是的 | |男 |内华达 |成人 |没有 | |女|佛罗里达 |高级|是的 | |男|佛罗里达州 |青少年 |没有 | |男|纽约 |青少年 |是的 | |女|内华达 |成人 |没有 | +--------+--------+--------+------------+

我想在计算“购买”数量时合并每列上的类别类型,从而有效地生成如下内容:

+--------+----------+------------+----+ | | |已购买 | +--------+----------+------------+----+ | | |是的 |没有 | |性别 |男 | 4 | 3 | | |女 | 5 | 2 | |状态|佛罗里达州 | 2 | 2 | | |国家 NV | 3 | 3 | | |纽约州 | 4 | 0 | |年龄 |高级| 3 | 0 | | |成人 | 3 | 3 | | |青少年 | 3 | 2 | +--------+----------+------------+----+

最佳答案

交叉表的使用+concat

pd.concat([pd.crosstab(df[x],df.Purchased)for x in df.columns[:-1]],keys=df.columns[:-1])
Out[273]: 
Purchased      No  Yes
Gender Female   2    5
       Male     3    4
State  FL       1    2
       Fl       1    0
       NV       3    3
       NY       0    4
Age    Adult    3    3
       Senior   0    3
       Teen     2    3

关于python - 在列中合并类别并获得一列计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56049626/

相关文章:

python - Minizinc Python - 使用 .dzn 模块而不是实例模块

pandas - 我想合并列的所有条目并将其放入每一列的一行中,如图所示

python - 比较 pandas 中的两列以使它们匹配

python - 使用偶数列作为列名称格式化数据透视表

python - datetime.timedelta(x,y) 在 CoCalc.com 上返回 TypeError 但在其他地方有效——为什么?

python 列表交集 - 正则表达式匹配

python - 如何为函数本身设置repr?

python - 将一列数据帧转换为基于其他列的 numpy 数组或张量

python - 合并 'left' ,但尽可能覆盖 'right' 值

python - Pandas groupby 和文件写入问题