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

如何将以ID为索引的DataFrame多行合并为单行?

解决方案

你可以用pandas的groupby()方法结合first()(或max())来实现,因为每个ID对应的每一列只会有一个非空值,聚合时会自动提取该值并忽略NaN。

步骤1:构造示例DataFrame(可直接替换为你的数据)

import pandas as pd
import numpy as np

data = {
    'index': [9894, 9894, 9269, 9269, 9269, 8655, 8655, 8618, 8618],
    'column_A': [49.99, np.nan, 636.09, np.nan, np.nan, 2861.11, np.nan, 471.09, np.nan],
    'column_B': [np.nan, 49.99, np.nan, np.nan, 636.09, np.nan, 2861.11, np.nan, 471.09],
    'column_C': [np.nan, np.nan, np.nan, 3536.23, np.nan, np.nan, np.nan, np.nan, np.nan]
}

df = pd.DataFrame(data).set_index('index')

步骤2:合并同一ID的行

# 两种方法效果一致,任选其一即可
merged_df = df.groupby(df.index).first()
# merged_df = df.groupby(df.index).max()

最终结果

运行后merged_df的输出如下:

column_A  column_B  column_C
index                               
8618      471.09    471.09       NaN
8655     2861.11   2861.11       NaN
9269      636.09    636.09    3536.23
9894       49.99     49.99       NaN

原理:groupby(df.index)按ID索引分组,first()/max()会提取每组中每列的唯一非NaN值(因为每组内每个列仅存在一个有效数值),最终实现每个ID对应一行,所有非空值整合到同一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:35:27