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

合并DataFrame中同一instance的多列数据,解决groupby操作异常

解决方案:合并同一Instance的分散列数据

你看到的<pandas.core.groupby.generic.DataFrameGroupBy object>不是错误,只是groupby()方法返回的是分组对象,而非直接处理后的DataFrame。你需要在分组后添加聚合操作,提取每个instance分组下的非NaN值,合并为单行。

核心思路

同一instance分组内,scan/comp/sort等列各自仅存在一个有效非NaN值,其余均为NaN。因此只需对每个分组的列取第一个非空值(或任意非空值)即可完成合并。

具体代码实现

  1. 先构造一个模拟你的df1的示例:
import pandas as pd
import numpy as np

df1 = pd.DataFrame({
    'instance': ['inst1', 'inst1', 'inst1', 'inst2', 'inst2'],
    'scan': [100, np.nan, np.nan, np.nan, 200],
    'comp': [np.nan, 50, np.nan, 80, np.nan],
    'sort': [np.nan, np.nan, 30, np.nan, 40]
})
  1. 使用groupby+聚合操作完成合并:
# 方式1:用first()自动跳过NaN,返回分组内每个列的第一个非空值
df2 = df1.groupby('instance').first().reset_index()

# 方式2:自定义lambda函数提取非空值,逻辑更直观
df2 = df1.groupby('instance').agg(lambda x: x.dropna().iloc[0]).reset_index()

说明

  • first()方法完美适配你的场景:它会自动忽略NaN,返回分组内每个列的第一个有效非空值。
  • reset_index()用于将instance从分组索引重新转为普通列,让最终的df2保持每行对应一个instance的规整结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:12:06