如何将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
相关产品推荐
相关产品推荐

