You need to enable JavaScript to run this app. 如何用Pandas合并重复行并以有效值填充NaN空单元格?
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas合并重复行并以有效值填充NaN空单元格?

Pandas合并分组填充NaN实现方案

实现思路

按指定的4个维度字段分组后,对数值字段取分组内第一个非空值即可完成空值填充与去重合并,注意分组时要保留包含NaN的分组,避免合法数据被过滤。

完整可运行代码

依赖导入

import pandas as pd
import numpy as np

构造示例DataFrame

df = pd.DataFrame(
{
    "type": ["E/2", "E/2", "E/2", "E/2"],
    "subtype1": ["N2", "N2", "N2", "N2"],
    "subtype2": ["a", "a", "b", np.nan],
    "subtype3": [np.nan, np.nan, np.nan, "xxx"],
    "flex_best": [20, np.nan, 20, np.nan],
    "flex_worst": [np.nan, 30, np.nan, 30],
    "lead_best": [23, np.nan, 23, np.nan],
    "is_best": [1, np.nan, 1, np.nan],
    "lead_worst": [np.nan, 33, np.nan, 33],
    "is_worst": [np.nan, 1, np.nan, 1],
}
)

核心处理逻辑

# 定义分组维度字段
group_keys = ["type", "subtype1", "subtype2", "subtype3"]
# 分组聚合:dropna=False保留分组键含NaN的组,first()自动取组内第一个非空值
result = df.groupby(group_keys, dropna=False).first().reset_index()

输出验证

打印result即可得到目标DataFrame:

typesubtype1subtype2subtype3flex_bestflex_worstlead_bestis_bestlead_worstis_worst
E/2N2aNaN2030231331
E/2N2bNaN20NaN231NaNNaN
E/2N2NaNxxxNaN30NaNNaN331

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:36:02