基于列名前缀动态分组Pandas列的实现方案咨询
Pandas按列名前缀分组实现方案
以下方案适配动态分组长度的场景,无需依赖固定列间隔即可完成按前缀分组:
前置依赖
确保已导入pandas库:
import pandas as pd
实现方式1:按固定长度前缀分组(适配首字符分组需求)
如果分组键为列名前N位固定长度的字符,直接对列名字符串切片作为分组键即可:
# 示例中取列名前1位作为分组键,可根据需求修改[:n]中的n值调整前缀长度 grouped = df.groupby(df.columns.str[:1], axis=1) # 查看分组结果 for group_name, group_df in grouped: print(f"分组{group_name}包含列:{group_df.columns.tolist()}") # 分组后可直接执行聚合操作,例如按分组求每行列均值 group_result = grouped.mean(axis=1)
实现方式2:自定义规则匹配前缀(适配前缀长度不统一的复杂场景)
如果不同分组的前缀长度不一致,可自定义函数提取分组键:
# 自定义分组键提取函数,可根据实际业务规则修改 def extract_group_key(col_name): # 示例逻辑:提取列名开头的所有大写字母作为分组键 import re return re.match(r'^[A-Z]+', col_name).group() # 按自定义规则分组 grouped = df.groupby(extract_group_key, axis=1)
补充场景:单独提取指定前缀的列
如果只需单独提取某一特定前缀的列,可直接用startswith筛选:
# 提取所有以"A"开头的列 df_group_a = df[df.columns[df.columns.str.startswith('A')]]
内容的提问来源于stack exchange,提问作者NEE2000
相关产品推荐
相关产品推荐

