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

将两个列表合并为DataFrame并基于索引字符串切片透视

解决DataFrame透视需求:将年份转为列,保留Cohort为行索引

步骤说明与代码示例

首先假设你的原始DataFrame包含cohort、year和pct_error_avg三列(如果索引是复合结构,先通过reset_index()提取出这两列),以下是具体实现方式:

1. 构造示例数据(模拟你的场景)

import pandas as pd

# 模拟你的输入数据
cohorts = ["FNCI 2.5", "FNCI 2.5", "FNCI 3.0", "FNCI 3.0", "FNCI 2.5"]
years = [2020, 2021, 2020, 2022, 2023]
pct_error_avgs = [1.2, 2.3, 0.8, 3.1, 1.9]

# 合并为DataFrame
df = pd.DataFrame({
    "cohort": cohorts,
    "year": years,
    "pct_error_avg": pct_error_avgs
})

2. 使用pivot实现透视转换

直接用pivot方法指定行索引、列和值的对应关系,缺失年份会自动填充NaN:

# 透视处理:cohort为行,year为列,值为pct_error_avg
pivoted_df = df.pivot(
    index="cohort",
    columns="year",
    values="pct_error_avg"
)

# 可选:对年份列进行排序
pivoted_df = pivoted_df.sort_index(axis=1)

3. 处理重复数据的情况

如果你的数据中存在同一cohort+year的重复记录,改用pivot_table并指定聚合方式(比如取均值):

pivoted_df = df.pivot_table(
    index="cohort",
    columns="year",
    values="pct_error_avg",
    aggfunc="mean"  # 根据需求选择聚合函数:sum、median等
)

最终效果示例

执行后你会得到类似这样的结果:

year        2020  2021  2022  2023
cohort                            
FNCI 2.5     1.2   2.3   NaN   1.9
FNCI 3.0     0.8   NaN   3.1   NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:45:40