You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame中按社区统计特定犯罪类型的计数问题

解决方案

核心思路

先统计每个社区中目标案件的数量,再补全所有12个社区(包括无目标案件的社区,计数设为0)。


方法一:筛选后分组计数+补全社区

# 1. 定义所有12个社区的列表(替换成你的实际社区名称列表)
all_communities = ["社区1", "社区2", ..., "社区12"]

# 2. 筛选出"OFFENSE INVOLVING CHILDREN"类型的案件
filtered_cases = df[df["Primary Type"] == "OFFENSE INVOLVING CHILDREN"]

# 3. 按社区分组统计案件数
community_counts = filtered_cases.groupby("Community Area")["Primary Type"].count()

# 4. 补全所有社区,缺失的社区计数填0,转成DataFrame
result_df = community_counts.reindex(all_communities, fill_value=0).reset_index()

# 5. 重命名列名
result_df.columns = ["Community Area", "Offense Involving Children Count"]

方法二:分组后直接条件求和

# 1. 定义所有12个社区的列表
all_communities = ["社区1", "社区2", ..., "社区12"]

# 2. 分组后对每个社区计算目标案件的数量
community_counts = df.groupby("Community Area")["Primary Type"].apply(
    lambda col: (col == "OFFENSE INVOLVING CHILDREN").sum()
)

# 3. 补全社区并整理成最终DataFrame
result_df = community_counts.reindex(all_communities, fill_value=0).reset_index()
result_df.columns = ["Community Area", "Offense Involving Children Count"]

关键提示

  • 必须补全所有12个社区:如果直接分组计数,没有目标案件的社区会被排除,reindex能确保这些社区也出现在结果里,计数设为0。
  • 如果你的社区列表来自另一个DataFrame,可以用pd.merge替代reindex,设置how="left"并填充0值即可。

内容的提问来源于stack exchange,提问作者slycooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:05:41