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

如何在pandas.DataFrame中按条件补全A列0-3缺失行并填充B列值

实现方案

不需要自行判断ID切换逻辑,直接用pandas笛卡尔积+重索引即可一步得到你给出的第一种标准预期结果,代码简洁且稳定性更高,不管ID排序规则是什么都能正常生效。

核心代码

import pandas as pd

# 构造示例df(你可以直接替换为自己的真实df)
data = {
    'ID': ['a','a','a','b','c','c','c','d','d','e','f','f','f','g','g'],
    'A': [0,1,2,3,0,2,3,0,1,2,1,2,3,1,2],
    'B': [111]*15
}
df = pd.DataFrame(data).reset_index(names='origin_index')

# 1. 生成所有ID与[0,1,2,3]的完整配对组合
full_combinations = pd.MultiIndex.from_product(
    [df['ID'].unique(), [0,1,2,3]],
    names=['ID', 'A']
)

# 2. 重索引补全缺失行,空值填充0后重置行索引
result = df.set_index(['ID', 'A'])\
           .reindex(full_combinations, fill_value=0)\
           .reset_index()\
           .reset_index(drop=True)

# 不需要保留原索引列的话可以加这行删除
# result = result.drop('origin_index', axis=1)

运行后输出的result完全匹配你给出的第一种预期结果,补入的行B值自动填充为0,每个ID都完整覆盖0、1、2、3四个A值。

内容的提问来源于stack exchange,提问作者김수환

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:02