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

如何优雅重组Pandas DataFrame:将证券ID转为列、日期设为索引

用Pandas原生方法实现长表转宽表

你要的这种结构转换完全不需要写for循环,用Pandas的pivot或pivot_table就能优雅解决,这也是处理这类数据结构转换的标准做法:

核心代码

假设你的DataFrame里,存储每个证券对应日期数据点的列是VALUE(替换成你实际的列名即可):

import pandas as pd

# 假设你的原始数据DataFrame名为df
wide_df = df.pivot(index='DATE', columns='ID', values='VALUE')

如果你的数据里存在同一个证券ID在同一日期有多条记录的情况(pivot会报错),就用pivot_table指定聚合逻辑,比如取第一条记录:

wide_df = df.pivot_table(index='DATE', columns='ID', values='VALUE', aggfunc='first')

适配你的示例数据

看你给出的示例,要是想把SOURCE或者ID_DATE作为展示的数据点,直接替换values参数就行。比如要转SOURCE列:

wide_df = df.pivot(index='DATE', columns='ID', values='SOURCE')

转换完成后,wide_df会以DATE为索引,每一列对应一个证券ID,每个单元格就是该证券在对应日期的对应数据。

额外提示

  • pivot速度更快,但要求DATE+ID的组合没有重复;
  • pivot_table兼容性更强,能处理重复的索引-列组合,你可以根据需求选择aggfunc(比如'mean'、'sum'都可以);
  • 要是不想让DATE当索引,加一句wide_df = wide_df.reset_index()就能把它变回普通列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:22:41