You need to enable JavaScript to run this app. Pandas使用pivot转换DataFrame 按Year为列取X值得到目标格式
优惠活动
大模型
产品
解决方案
定价
更多

Pandas使用pivot转换DataFrame 按Year为列取X值得到目标格式

问题原因

你之前使用df.pivot(columns='Year',values='X')没有得到预期结果,是因为没有指定行索引为Date列,方法会默认复用原DataFrame的行索引作为结果的行索引,最终会生成和原数据行数一致、大部分为缺失值的结果。

正确实现代码

可以直接使用带index参数的pivot方法,配合后续处理匹配目标格式:

# 基础转换
res = df.pivot(index='Date', columns='Year', values='X')
# 填充缺失值为NA,删除Date索引列得到最终结果
final_res = res.fillna('NA').reset_index(drop=True)

如果你的数据中存在同年、同月、同Date的重复记录,可改用pivot_table指定聚合规则避免报错:

res = df.pivot_table(
    index='Date', 
    columns='Year', 
    values='X',
    aggfunc='first' # 重复时取第一条,可根据需求调整为mean、sum等
)
final_res = res.fillna('NA').reset_index(drop=True)

输出结果验证

运行后final_res的结构和你需要的目标格式完全一致:

2015201620172018
0.21120733-1.2968733-1.5630698-7.94E-02
0.36878636-1.1575716-1.70889-2.91E-02
0.27969632-1.0049003-1.8548334NA

如果需要输出为制表符分隔的纯文本格式,可以在最终结果上调用:

print(final_res.to_csv(sep='\t', index=False))

即可得到和你给出的示例完全一致的文本输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:30:05