合并列中的类别并获取一列的计数

2024-09-29 00:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个我需要帮助的问题

我有一个表,我将简化如下:

+--------+-------+--------+-----------+ | Gender | State | Age | Purchased | +--------+-------+--------+-----------+ | Male | NV | Adult | Yes | | Female | NV | Adult | Yes | | Male | FL | Teen | Yes | | Male | FL | Adult | No | | Female | NV | Teen | No | | Female | NY | Senior | Yes | | Male | NY | Senior | Yes | | Female | NY | Adult | Yes | | Female | NV | Teen | Yes | | Male | NV | Adult | No | | Female | FL | Senior | Yes | | Male | Fl | Teen | No | | Male | NY | Teen | Yes | | Female | NV | Adult | No | +--------+-------+--------+-----------+

我想在计算“购买”的数量时,对每列上的类别类型进行合并,有效地产生如下结果:

+--------+----------+-----------+----+ | | | Purchased | +--------+----------+-----------+----+ | | | Yes | No | | Gender | Male | 4 | 3 | | | Female | 5 | 2 | | State | State FL | 2 | 2 | | | State NV | 3 | 3 | | | State NY | 4 | 0 | | Age | Senior | 3 | 0 | | | Adult | 3 | 3 | | | Teen | 3 | 2 | +--------+----------+-----------+----+


Tags: noagegendermalefemaleyesstatefl
2条回答

使用crosstab+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

我的做法:

a = {}
for col in ['Gender', 'State', 'Age']:
    a[col] = (df.groupby(col).Purchased.value_counts().unstack())

pd.concat(a)

相关问题 更多 >