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

使用Pandas向DataFrame追加缺失值对应的字典行数据

解决方案:向DataFrame追加缺失行数据

原始数据

ID  Date    type    energy
AA  Q1 2022 a       1
AA  Q2 2022 ok      1
AA  Q3 2022 yes     1
AA  Q4 2022 yes     4
FC  Q1 2022 no      4
FC  Q2 2022 no      4
FC  Q3 2022 yes     45
FC  Q4 2022 yes     5

期望结果

ID  Date    type    energy
AA  Q1 2022 a       1
AA  Q2 2022 ok      1
AA  Q3 2022 yes     1
AA  Q4 2022 yes     4
FC  Q1 2022 no      4
FC  Q2 2022 no      4
FC  Q3 2022 yes     45
FC  Q4 2022 yes     5
BC  Q1 2022         0
DA  Q1 2022         0

问题分析

你之前的merge代码逻辑错误,merge(df, df)只是重复合并原数据,没有正确构造要追加的行数据。要实现需求,核心是先构造包含缺失行的新DataFrame,再和原数据纵向合并。

正确代码实现

import pandas as pd

# 初始化原DataFrame
data = [
    ["AA", "Q1 2022", "a", 1],
    ["AA", "Q2 2022", "ok", 1],
    ["AA", "Q3 2022", "yes", 1],
    ["AA", "Q4 2022", "yes", 4],
    ["FC", "Q1 2022", "no", 4],
    ["FC", "Q2 2022", "no", 4],
    ["FC", "Q3 2022", "yes", 45],
    ["FC", "Q4 2022", "yes", 5],
]
df = pd.DataFrame(data, columns=["ID", "Date", "type", "energy"])

# 定义需要追加的行字典(你的原始字典)
values = {'BC': 'Q1 2022', 'DA': 'Q1 2022'}

# 把字典转换成符合列结构的行数据
missing_rows = [[id, date, "", 0] for id, date in values.items()]

# 构造缺失行的DataFrame,列名和原数据保持一致
missing_df = pd.DataFrame(missing_rows, columns=df.columns)

# 纵向合并原数据和缺失行,重置索引避免重复
result_df = pd.concat([df, missing_df], ignore_index=True)

print(result_df)

代码说明

  1. 字典转行数据:用列表推导式快速把你的values字典转换成符合原DataFrame列结构的行,自动填充type为空字符串、energy为0。
  2. 纵向合并:pd.concat是专门用来合并多个DataFrame的工具,ignore_index=True会重置合并后的索引,避免出现重复索引问题。
  3. 直接赋值默认值:在构造缺失行时直接指定默认值,比合并后再用fillna更高效直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:18:20