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

如何将DataFrame分组填充后的更新结果保存回原数据?

解决方案

直接通过分组+批量处理就能实现,不用手动循环分组:

import pandas as pd

# 构造你的示例数据
df = pd.DataFrame({
    'id': ['ac2', 'bd4', 'ac2', 'bd4', 'ac2'],
    'name': ['canela', 'cheerio', 'canela', 'cheerio', 'canela'],
    'treat': ['brownie', '', '', 'cookie', ''],
    'snack': ['', 'chips', 'pretzel', '', ''],
    'year': ['', '1990', '', '', '2004']
})

# 核心处理逻辑
result = df.groupby('id', as_index=False).apply(lambda x: x.ffill().bfill().iloc[0])

print(result)

运行后输出就是你要的结果:

idnametreatsnackyear
ac2canelabrowniepretzel2004
bd4cheeriocookiechips1990

为什么你的原有代码没生效?

  • gb_df.get_group(i).ffill().bfill()返回的是数据副本,你没有把处理后的结果保存到新变量里,自然不会影响原DataFrame。
  • 手动循环分组完全没必要,pandas的groupby配合apply可以批量处理所有分组,代码更简洁效率也更高。

另一种更直接的写法

因为你的数据里每个id对应的每个字段只有一个非空值,还可以直接取每个分组里的非空值:

result = df.groupby('id', as_index=False).agg(lambda x: x.dropna().iloc[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:13:34