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

如何合并Pandas DataFrame中含稀疏值的多行数据?

Pandas合并稀疏DataFrame的解决方法

针对按Name合并多行稀疏数据、用后续非空值替换空值且同列多有效值保留最后一个的需求,有两种简洁的实现方式:

方法一:向后填充+取分组最后一行

利用bfill()向后填充空值,再取每组最后一行即可得到目标结果:

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({
    'Name': ['A', 'A', 'A'],
    'ParamA': [1.0, np.nan, np.nan],
    'ParamB': [np.nan, np.nan, np.nan],
    'ParamC': [np.nan, 3.0, np.nan],
    'ParamD': [np.nan, np.nan, 6.0]
})

# 分组处理
result = df.groupby('Name').apply(lambda x: x.bfill().iloc[-1]).reset_index(drop=True)

原理:bfill()会将每列的空值用后续行的非空值覆盖,填充后每组的最后一行自然包含所有可用的非空值,且同列存在多个有效值时,最后一个会被保留。

方法二:分组聚合取最后一个非空值

直接对每个分组的列进行聚合操作,提取最后一个非空值:

result = df.groupby('Name').agg(
    lambda x: x.dropna().iloc[-1] if not x.dropna().empty else np.nan
).reset_index()

原理:对每个分组的每列,先过滤掉空值,若剩余有效值则取最后一个;若列全为空则保留NaN,精准匹配需求。

两种方法最终输出的结果均符合预期:

NameParamAParamBParamCParamD
A1.0NaN3.06.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:35:18