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

如何将DataFrame列中元素拆分为子列(构建多级索引DataFrame)

拆分DataFrame列表元素并构建多级索引列

假设你的DataFrame变量名为df,可以通过以下步骤实现需求:

步骤1:拆分列表列为子列

对每一列应用pd.Series,把列表里的两个元素拆成单独的列,同时给子列指定名称(比如["数值", "变动"]):

import pandas as pd

# 构造示例DataFrame(已加载数据可跳过)
data = {
    "-1W": [[119.06, 1.20], [207.00, 3.70], [313.32, 8.28], [517.90, 10.87]],
    "ME": [[120.27, 0.0], [210.71, 0.0], [321.61, 0.0], [528.77, 0.0]],
    "QE": [[125.85, -5.58], [215.54, -4.83], [325.20, -3.59], [510.14, 18.63]],
    "YE": [[80.53, 39.73], [119.74, 90.97], [203.13, 118.47], [395.14, 133.63]]
}
df = pd.DataFrame(data)

# 拆分每一列的列表元素
split_df = df.apply(lambda col: col.apply(pd.Series), axis=0)

步骤2:设置多级列索引

把原来的列名(-1W、ME等)作为上层索引,子列名作为下层索引:

# 定义子列名称
sub_cols = ["数值", "变动"]
# 构建多级列索引
split_df.columns = pd.MultiIndex.from_product([df.columns, sub_cols])

执行后得到的split_df结构如下:

-1W           ME            QE             YE        
        数值    变动    数值   变动    数值    变动    数值     变动
0   119.06   1.20  120.27  0.0  125.85  -5.58   80.53   39.73
1   207.00   3.70  210.71  0.0  215.54  -4.83  119.74   90.97
2   313.32   8.28  321.61  0.0  325.20  -3.59  203.13  118.47
3   517.90  10.87  528.77  0.0  510.14  18.63  395.14  133.63

补充说明

  • 子列名称可根据需求修改sub_cols的内容;
  • 若列表元素长度不一致,拆分后会自动填充NaN,可使用fillna()按需处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:54:26