我有这个数据集。

data = pd.DataFrame({'sex':['male','female','female','male'],
                      'class':[1,2,3,2],
                      'smoking':[12,22,33,9]
})

   class     sex  smoking
0      1    male       12
1      2  female       22
2      3  female       33
3      2    male        9


我按性别和班级分组:

smokers = data.groupby(['sex','class'])['smoking'].agg(sum)

sex     class
female  2        22
        3        33
male    1        12
        2         9


现在,我只想统计男性吸烟者。

我知道我可以做:

male_smokers = data[data['sex'] == 'male'].groupby(['sex','class'])['smoking'].agg(sum)


但我希望能够做到:

male_smokers = smokers[smokers['sex'] == 'male'].count()


那有可能吗?(现在我正在接收'keyError'sex)

最佳答案

使用loc进行快速剖切。

smokers.loc['male'].sum()


或者您可以使用xs更明确

smokers.xs('male', level='sex').sum()


或者您可以直接从data派生

data.query('sex == "male"').smoking.sum()

关于python - 只计算一组中的男性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41147551/

10-11 22:57
查看更多