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

如何在Pandas中用自定义函数将列名转为多级列

将拆分后的列名转为多级列(MultiIndex)

假设你已经有了可用的自定义拆分函数(比如能把Clicks_4adstock_alpha1_beta3拆成['Clicks_4adstock', 'alpha1_beta3']),只需要两步就能把拆分结果转换成多级列索引:


步骤1:批量处理所有列名,生成元组列表

遍历DataFrame的所有列,用你的自定义函数拆分每个列名,把拆分后的列表转为元组(MultiIndex要求元素可哈希,元组比列表更合适):

# 假设你的DataFrame名为df,自定义拆分函数叫split_col_name
multi_col_tuples = [tuple(split_col_name(col)) for col in df.columns]

步骤2:将元组列表转为MultiIndex并替换原列名

用pandas的MultiIndex.from_tuples()方法生成多级索引,直接赋值给DataFrame的columns属性即可:

import pandas as pd
df.columns = pd.MultiIndex.from_tuples(multi_col_tuples, names=['核心指标', '参数组合'])

(这里的names参数可以自定义两级列索引的名称,按需修改即可)


完整示例演示

如果还没有现成的拆分函数,这里提供一个适配你列名格式的参考实现,搭配完整流程:

import pandas as pd

# 构造测试DataFrame
test_data = {
    'Clicks_alpha0_beta0': [120, 180],
    'Impressions_3adstock_alpha1_beta3': [1500, 2200],
    'Conversions_alpha2_beta1': [7, 11]
}
df = pd.DataFrame(test_data)

# 自定义拆分函数:从右侧拆分出alphaX_betaY部分
def split_col_name(col):
    split_pos = col.rfind('_alpha')  # 定位右侧第一个_alpha的位置
    return (col[:split_pos], col[split_pos+1:])

# 生成多级列
multi_col_tuples = [tuple(split_col_name(col)) for col in df.columns]
df.columns = pd.MultiIndex.from_tuples(multi_col_tuples, names=['Metric', 'Params'])

# 查看结果
print(df)

运行后你会得到带两级列索引的DataFrame,第一级是业务指标名称,第二级是对应的参数组合。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:00:56