python - 熊猫计算范围之间每个值的出现次数
问题描述
我有一个数据集,其中我将年龄作为连续变量,并且我想对多个年龄组范围(例如 18-25、26-33 等)在“心理健康”中出现 1 和 0 的次数进行统计.
示例代码如下:
df = pd.DataFrame([[18, 1], [45, 1], [56, 0], [26, 0], [35, 1]], columns=['Age', 'Mental_Health'])
最简单的方法是什么?如果可以避免的话,我真的不想将年龄转换为一个范围,如果必须的话,我会这样做,但理想情况下,我要寻找的结果是 18-25 痛苦 = 24,而不是痛苦 = 21,并且以此类推,适用于所有年龄段。
最简单的方法是什么?
解决方案
你想要pd.cut
。您可以定义任意箱(我在下面使用了范围)。这将剪切通过的系列,您可以计算不同的“剪切”范围以查看其中有多少行:
df["age_range"] = pd.cut(df.Age, bins=[0,18,25,33,99], right=False)
df2 = df.groupby("age_range").Mental_Health.sum().to_frame(name="suffering")
df2["not_suffering"] = df.groupby("age_range").Mental_Health.count() - df2.suffering
输出:
suffering not_suffering
age_range
[0, 18) 0 0
[18, 25) 1 0
[25, 33) 0 1
[33, 99) 2 1
推荐阅读
- kubernetes - 无法使用 StorageClass“google-storage”配置卷
- python - 从 ArgumentParser 获取参数而不调用 parse_args
- python - 使用python更改目录内的文件名
- flutter - Flutter:在TextField外部单击时调用函数
- javascript - 如何根据更新日期更新goodreads中的已读书籍?
- javascript - MongoDB事务实现
- javascript - 如何使用 Javascript 向父级的子元素添加类
- javafx - 如何禁用 JavaFX 组合框中的箭头按钮
- python - 使用 Python 一次性获取文件列表和文件大小?
- c++ - 代码在删除 if 语句后产生两个不同