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

如何在Pandas中合并同列DataFrame补全0犯罪年份数据?

解决方案:填充缺失的国家-年份犯罪数据

以下是可直接在Jupyter Notebook中运行的实现步骤:

1. 生成包含所有国家-年份组合的DataFrame(df2)

先定义你的国家列表和目标年份范围,通过笛卡尔积生成完整的组合:

import pandas as pd

# 替换为你实际的18个国家列表
countries = ["国家1", "国家2", "国家3", ...]  # 补充剩余国家
years = range(2000, 2021)  # 覆盖2000-2020所有年份

# 生成全量国家-年份组合
df2 = pd.DataFrame(
    pd.MultiIndex.from_product([countries, years], names=["country", "year"]),
    columns=["country", "year"]
)

2. 合并df1与df2并填充缺失值

使用merge做左连接,保留df2的所有行,将df1中的犯罪数据匹配进来,最后把缺失值替换为0:

# 左连接:保留df2的所有组合,匹配df1中的已有数据
# 确保df1的列名和df2一致(比如都是country和year),否则用left_on/right_on指定对应列
merged_df = df2.merge(df1, on=["country", "year"], how="left")

# 将缺失的犯罪数替换为0
merged_df["crime_total"] = merged_df["crime_total"].fillna(0)

补充说明

  • 如果df1的列名和df2不一致(比如df1中国家列叫Country),修改merge语句:
    merged_df = df2.merge(
        df1,
        left_on=["country", "year"],
        right_on=["Country", "year"],
        how="left"
    )
    # 删除重复的列(可选)
    merged_df = merged_df.drop("Country", axis=1)
    
  • 最终的merged_df就是包含所有国家-年份、且缺失年份犯罪数为0的目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:52:37