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

如何根据字典定义的列名前缀将pandas DataFrame拆分为多个子表

Pandas按列名前缀拆分DataFrame解决方案

错误原因

  1. 变量名不匹配:你定义的分组规则字典名为groups,循环中调用的groupings属于未定义变量,会直接触发报错
  2. 参数格式不符合要求:pd.Series.str.startswith()方法如果要同时匹配多个前缀,需要传入元组类型的参数,原代码传入嵌套列表[v],类型不匹配导致筛选失败

修正后代码

import pandas as pd
import numpy as np

# 初始化示例数据
df = pd.DataFrame(np.random.randint(0,5,size=(5, 10)), columns=('a_group1_sub','a_group1_actual','b_group1_sub','b_group1_actual','b_group2_total','b_group2_sub','b_group2_expected','class_first','class_second','area_x'))
groups = {1: ['a_group1'], 2: ['b_group1', 'b_group2'], 3: ['class', 'area']}

# 拆分后的子表存入字典
split_dfs = {}
for k, prefixes in groups.items():
    # 把前缀列表转成元组传入startswith方法
    filter_mask = df.columns.str.startswith(tuple(prefixes))
    split_dfs[f'df{k}'] = df.loc[:, filter_mask]

# 按需取出子表
df1 = split_dfs['df1']
df2 = split_dfs['df2']
df3 = split_dfs['df3']

结果验证

可以通过打印子表列名确认拆分正确:

print(df1.columns)
# 输出:Index(['a_group1_sub', 'a_group1_actual'], dtype='object')

print(df2.columns)
# 输出:Index(['b_group1_sub', 'b_group1_actual', 'b_group2_total', 'b_group2_sub', 'b_group2_expected'], dtype='object')

print(df3.columns)
# 输出:Index(['class_first', 'class_second', 'area_x'], dtype='object')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:09:05