如何基于指定列给Pandas DataFrame添加分组表头行?
为Pandas DataFrame添加分组子表头
步骤1:修正现有表头
如果你的DataFrame实际列名在第二行(索引为1),先将其设为正式列名并清理无关行:
import pandas as pd # 假设df是你的目标DataFrame df.columns = df.iloc[1] # 把第二行设为列名 df = df.drop([0, 1]) # 删除前两行(原表头上方的无用行) df = df.reset_index(drop=True) # 重置索引
步骤2:定义列分组映射
明确哪些列归属于哪个子表头,示例如下(根据你的实际需求修改):
# 自定义分组规则:键是子表头名称,值是对应列名列表 group_map = { '订单核心信息': ['Order ID', 'Order Date', 'Ship Mode'], '客户信息': ['Customer ID', 'Customer Name', 'Region'], '商品交易信息': ['Product ID', 'Category', 'Sales', 'Quantity'] }
步骤3:构建多层子表头(MultiIndex)
将分组与列名组合成多层索引,实现子表头效果:
# 生成多层索引所需的元组列表 multi_column_tuples = [] for group_name, columns in group_map.items(): for col in columns: multi_column_tuples.append((group_name, col)) # 为DataFrame设置多层表头 df.columns = pd.MultiIndex.from_tuples(multi_column_tuples)
可选:利用主键优化结构
如果需要用Order ID作为主键,可以将其设置为索引:
# 把Order ID设为索引(level=1表示取第二层列名) df = df.set_index(('订单核心信息', 'Order ID'))
内容的提问来源于stack exchange,提问作者SOScodehelp
相关产品推荐
相关产品推荐

