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

如何将DataFrameGroupBy转为DataFrame(保留值,无需聚合操作)

解决方案:分组合并非空值并转回DataFrame

你需要的不是单纯的groupby,而是分组后对每列聚合提取非空值,这样就能得到可用于合并的标准DataFrame。核心思路是针对每个lstID+covID分组,把各列的非空值保留下来,用同组内的非空值填充对应列的空值。

核心代码

import pandas as pd

# 按['lstID','covID']分组,聚合每列的非空值
dftest = cov_DF.groupby(['lstID', 'covID'], as_index=False).agg(
    lambda x: x.dropna().iloc[0] if not x.dropna().empty else None
)

代码说明

  1. as_index=False:让分组的lstID和covID保持为普通列,而非转为索引,方便后续和其他DataFrame按lstID合并。
  2. agg聚合逻辑:对每一列执行lambda操作:
    • 先剔除列中的空值(x.dropna())
    • 若剔除后还有数据,取第一个值(适配你的场景:同一分组同一列只会有一个非空值)
    • 若列全为空,则返回None保留空值状态

针对你的示例验证

原数据:

lstIDcovIDcovPremcovBaseCovValue
1110NANA
11NA2NA

执行代码后得到的dftest:

lstIDcovIDcovPremcovBaseCovValue
11102NA

后续合并操作

此时dftest是标准DataFrame,直接用pd.merge和其他DF合并即可:

# 假设另一个DF名为other_DF,按lstID合并
merged_df = pd.merge(dftest, other_DF, on='lstID', how='left') # 可根据需求调整how参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:54:33