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

如何用Pandas合并DataFrame中同索引的多行数据?

解决Pandas同索引多行合并并清理缺失值的Pythonic方案

嘿,刚接触Pandas的话遇到这种同索引行合并补全的需求太正常了,我之前也碰到过类似场景~用Pandas内置的方法就能优雅解决,完全不用写冗余易坏的循环或判断代码,完美适配2行、3行甚至更多同索引行的合并场景。

步骤1:合并同索引行,补全缺失值

核心思路是按索引分组,然后对每个分组内的字段,保留第一个(或唯一的)非NaN值。这里有两种常用方案:

方案一:通用型(适配所有数据类型)

如果你的DataFrame里有数值、字符串等混合类型,用自定义聚合函数更稳妥,它会为每个字段提取第一个非缺失值:

import pandas as pd
import numpy as np

# 假设你的原始DataFrame名为df
merged_df = df.groupby(df.index).agg(
    lambda x: x.dropna().iloc[0] if not x.dropna().empty else np.nan
)

方案二:高效型(仅数值型字段)

因为你的字段(Glucose、Insulin、Carbs)都是数值类型,用max()或min()会更高效——Pandas的聚合函数会自动忽略NaN,返回分组内的非缺失值(如果存在的话):

merged_df = df.groupby(df.index).max()

步骤2:删除仍含NaN的行

合并完成后,用dropna()一键清理掉还有缺失值的行:

cleaned_df = merged_df.dropna()

合并成一行的极简写法

如果想一步到位,可以把两个操作链式调用:

cleaned_df = df.groupby(df.index).max().dropna()

为什么这是Pythonic的?

  • 完全依赖Pandas内置的向量化操作,比手动循环快得多,尤其是处理大数据集时
  • 代码简洁易读,逻辑清晰,不需要维护复杂的条件判断
  • 自动适配任意数量的同索引行(2行、3行都没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:37:16