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

如何合并DataFrame中相同索引的行并保留各列非空值

Pandas 同索引多行列合并方案

要实现你需要的同索引两行聚合成单行、保留各列非空值且不修改原有数据类型的需求,按索引分组后取首个非空值即可实现,具体代码如下:


1. 模拟原始数据(可跳过直接使用你自己的DataFrame)

import pandas as pd
import numpy as np

# 构造和你场景一致的示例数据
df = pd.DataFrame(
    [["UF", None], [None, 1400]],
    index=["BTU26", "BTU26"],
    columns=["col 1", "col 2"]
)
# 兼容整数列空值,避免空值导致列类型自动转为float
df["col 2"] = df["col 2"].astype("Int64")

2. 核心合并代码

# 如果原始数据空值是空字符串,先统一替换为NA
df = df.replace("", pd.NA)
# 按索引分组,每列取分组内第一个非空值
merged_df = df.groupby(level=0).first()

效果说明

处理后的merged_df中索引为BTU26的行,col 1值为UF(字符串类型)、col 2值为1400(整数类型),完全符合需求。

注意事项

  • 如果你同索引下某列存在多个非空值,可将first()替换为last()或自定义聚合函数调整取值优先级
  • 单层索引场景下,groupby(level=0)也可以替换为groupby(df.index),两者效果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:04