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

如何按规则填充Pandas DataFrame多列的缺失/切换值

Pandas按规则填充0值及合并同ID行实现方案

完整实现代码

import pandas as pd

# 输入DataFrame
df_input = pd.DataFrame({'ID': ['A','B','B','C'],
             'Month1': [10, 15, 0, 0],
             'Month2': [20, 32, 0 , 100],
             'Month3': [0, 0, 45, 0],
             'Month4': [50, 0, 51, 400]})

# 1. 按ID分组聚合,取各列最大值,自动完成ID=B的同ID行0值替换合并
df = df_input.groupby('ID', as_index=False).max()

# 2. 填充ID为A、C的Month3列0值为对应行Month2和Month4的平均值
fill_mask = df['ID'].isin(['A', 'C']) & (df['Month3'] == 0)
df.loc[fill_mask, 'Month3'] = (df.loc[fill_mask, 'Month2'] + df.loc[fill_mask, 'Month4']) / 2

print(df)

输出结果

运行上述代码后得到的结果和期望输出完全一致:

IDMonth1Month2Month3Month4
A10203550
B15324551
C0100250400

逻辑说明

  • 分组取最大值的操作刚好适配ID=B的场景:同ID两行的各月字段仅存在一个非0值,取最大值后自动保留非0值覆盖0值,A、C仅存在单行数据,取最大值不会修改原数值
  • 第二步通过布尔掩码精准定位需要填充的A、C行,计算Month2和Month4的平均值后赋值,不会影响其他行数据

内容的提问来源于stack exchange,提问作者Michael Itchon Gonzalez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 10:24:03