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

如何用Pandas为已有DataFrame添加顶级列并实现子列值对齐?

给已有DataFrame添加多级列(顶级列+子列)

原代码的问题在于pd.DataFrame([med], columns=cols)把整个med DataFrame当成了单行数据的元素,导致每个单元格存储的是完整的Series,而非单个数值,自然无法对齐。

下面是两种直接可行的解决方案:

方法一:直接修改原DataFrame的列索引

如果不需要保留原med的结构,直接修改它的列索引即可:

import pandas as pd

med = pd.DataFrame({
      'Gold':[54, 37, 37, 14, 19, 19, 9, 10, 2],
      'Silver': [42, 40, 26, 16, 22, 14, 8, 9, 9],
      'Bronze': [41, 49, 29, 32, 33, 12, 9, 7, 11],
})

# 把原列名嵌套到顶级列'Masculine'下
med.columns = pd.MultiIndex.from_product([['Masculine'], med.columns])

方法二:用pd.concat创建新的多级列DataFrame

如果需要保留原med不变,用pd.concat包装即可自动生成多级列:

import pandas as pd

med = pd.DataFrame({
      'Gold':[54, 37, 37, 14, 19, 19, 9, 10, 2],
      'Silver': [42, 40, 26, 16, 22, 14, 8, 9, 9],
      'Bronze': [41, 49, 29, 32, 33, 12, 9, 7, 11],
})

# 以字典形式传入,键作为顶级列名,值作为子列对应的DataFrame
df = pd.concat({'Masculine': med}, axis=1)

两种方法最终得到的结果一致:顶级列为Masculine,下属Gold、Silver、Bronze三个子列,所有数值和原med完全对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:40:37