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

pandas按指定列分组合并ALPHA列非空值并移除NAN的实现问题

实现方案

核心逻辑

你给出的数据有明确特性:相同ColA~ColE分组下,每一个ALPHA列最多存在1个非NAN值,因此不需要拆分表再拼接,直接按5个键列分组后对ALPHA列做聚合即可,聚合时直接取唯一的非空值就行。

完整代码

import pandas as pd

# 1. 提取分组键列和ALPHA列
# 正则匹配保证只取ColA到ColE五列,忽略大小写避免匹配失败
key_cols = input_df.columns[input_df.columns.str.contains(r'^Col[A-E]$', case=False)].tolist()
alpha_cols = input_df.columns[input_df.columns.str.contains('ALPHA')].tolist()

# 2. 分组聚合,min_count=1保证全NAN的列聚合后仍为NAN
output_df = input_df.groupby(key_cols, as_index=False)[alpha_cols].sum(min_count=1)

说明

  • 该方案性能远高于逐列处理的写法,适配你上千列的大表场景
  • 你给出的预期输出中u/v/w/z/k组存在多条行属于笔误,按合并需求每个唯一ColA~ColE组合仅会对应1行结果,聚合后所有ALPHA列的非空值都会合并到同一行
  • 如果你需要保留非数值类型的ALPHA值,可以把聚合逻辑替换为 .agg(lambda x: x.dropna().iloc[0] if x.notna().any() else pd.NA),效果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:06:04