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

如何将带多重索引的pandas Series转换为DataFrame?

多级索引Series转指定格式DataFrame的解决方案

你需要将带有capability_name(一级索引)和collection_title(二级索引)的Series转换为以能力名称为行、时间为列的宽表,用unstack()方法就能轻松实现,步骤如下:

1. 转换索引为列

使用unstack()将二级索引collection_title转为DataFrame的列:

df = s.unstack(level='collection_title')

level参数可以指定要转换的索引层级,这里直接用索引名更清晰,也可以用位置level=1(因为collection_title是第二层索引)。

2. 调整列顺序

默认unstack()后的列顺序是按索引自然排序,你需要手动指定列的顺序来匹配目标格式:

df = df[['Jul 2022', 'Jan 2023']]

完整示例代码

import pandas as pd

# 构造原始多级索引Series(模拟你的数据)
data = [3.714286, 3.545455, 4.000000, 3.760000, 3.666667, 3.529412, 3.000000, 3.000000, 2.600000, 2.750000]
index = pd.MultiIndex.from_tuples(
    [
        ('Capability_01', 'Jan 2023'),
        ('Capability_01', 'Jul 2022'),
        ('Capability_02', 'Jan 2023'),
        ('Capability_02', 'Jul 2022'),
        ('Capability_03', 'Jan 2023'),
        ('Capability_03', 'Jul 2022'),
        ('Capability_04', 'Jan 2023'),
        ('Capability_04', 'Jul 2022'),
        ('Capability_05', 'Jan 2023'),
        ('Capability_05', 'Jul 2022'),
    ],
    names=['capability_name', 'collection_title']
)
s = pd.Series(data, index=index, name='capability_score')

# 转换并调整列顺序
df = s.unstack(level='collection_title')
df = df[['Jul 2022', 'Jan 2023']]

print(df)

输出结果

Jul 2022  Jan 2023
capability_name                       
Capability_01       3.545455  3.714286
Capability_02       3.760000  4.000000
Capability_03       3.529412  3.666667
Capability_04       3.000000  3.000000
Capability_05       2.750000  2.600000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:50:23