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

如何对Pandas DataFrame中带C1-C6后缀ID的行进行分组?

解决方法

1. 先从名称中提取目标ID

groupby无法识别C1-C6,核心原因是这些ID嵌在名称字符串里,不是独立的分组列。先把ID提取出来:

场景1:ID固定在名称末尾(如XXXC4)

假设你的样本名称列叫sample_name,用正则提取末尾的C+数字组合:

import pandas as pd

# 读取数据集
df = pd.read_excel('your_data.xlsx')

# 提取末尾的ID
df['group_id'] = df['sample_name'].str.extract(r'(C\d+)$')

场景2:ID可能出现在名称任意位置(仅为C1-C6)

如果ID不一定在末尾,但属于指定的C1-C6集合,直接匹配关键词:

target_ids = ['C1', 'C2', 'C3', 'C4', 'C5', 'C6']
pattern = '|'.join(target_ids)
df['group_id'] = df['sample_name'].str.extract(f'({pattern})')

2. 基于提取的ID执行分组

有了独立的group_id列,groupby就能正常识别分组了:

# 按ID分组并计算特征均值(示例操作)
grouped_result = df.groupby('group_id').mean()

# 如果需要在原数据中添加分组统计值,用transform
df['feature_group_avg'] = df.groupby('group_id')['your_feature_column'].transform('mean')

3. 排查异常情况

  • 检查提取后是否有缺失ID:如果存在,说明部分名称未匹配到目标格式,需要调整正则或确认名称规则
# 查看未匹配到ID的样本名称
unmatched_samples = df[df['group_id'].isna()]['sample_name']
print(unmatched_samples)
  • 确保group_id是字符串类型:避免数字格式导致的分组错误
df['group_id'] = df['group_id'].astype(str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:51:45