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

如何使用Pandas基于ColA的值对ColB数据进行归类合并

Pandas实现COLB按ColA归类方案

步骤说明与代码实现

首先构造示例DataFrame(模拟你的原始数据):

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'ColA': ['ABC', np.nan, np.nan, 'DEF', np.nan, np.nan, np.nan, 'GHI', 'IJK'],
    'COLB': [np.nan, 'a', 'b', np.nan, 'c', 'd', 'e', np.nan, 'f']
})

1. 填充ColA的缺失值

利用前向填充(ffill),将ColA中连续的空值替换为最近的非空ColA值,让每个COLB条目对应到正确的分组:

df['ColA'] = df['ColA'].ffill()

2. 过滤无效行

去掉COLB为空的行(这些是每个分组开头的原始空行,无有效COLB数据):

df_filtered = df[df['COLB'].notna()]

3. 分组合并COLB数据

按ColA分组,将每组的COLB值用逗号拼接:

grouped = df_filtered.groupby('ColA')['COLB'].agg(','.join).reset_index()

4. 补充缺失分组并处理空值

对于没有对应COLB数据的ColA(如GHI),补充到结果中并将COLB设为"Empty":

# 获取所有唯一的ColA分组
all_groups = df['ColA'].unique()
# 重新索引补充分组,填充空值
result = grouped.set_index('ColA').reindex(all_groups).fillna('Empty').reset_index()

执行后输出结果:

ColA     COLB
0  ABC      a,b
1  DEF    c,d,e
2  GHI    Empty
3  IJK        f

简洁版代码

可以将上述步骤合并为链式调用:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'ColA': ['ABC', np.nan, np.nan, 'DEF', np.nan, np.nan, np.nan, 'GHI', 'IJK'],
    'COLB': [np.nan, 'a', 'b', np.nan, 'c', 'd', 'e', np.nan, 'f']
})

result = (
    df.assign(ColA=df['ColA'].ffill())
    .query('COLB.notna()')
    .groupby('ColA')['COLB'].agg(','.join)
    .reindex(df['ColA'].ffill().unique())
    .fillna('Empty')
    .reset_index()
)

print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:18:18