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

如何使用Python Pandas将年月分离的均价数据转换为日期-均价结构

解决方法

假设你的CSV文件读取后的DataFrame为行索引是年份、列是月份的宽表结构,可通过以下步骤完成格式转换:

import pandas as pd

# 1. 读取CSV,指定第一列为行索引(如果年份是单独列则去掉index_col=0)
df = pd.read_csv('your_file.csv', index_col=0)

# 2. 将年份索引转为普通列
df = df.reset_index().rename(columns={'index': 'Year'})

# 3. 用melt将宽表转成包含年月和价格的长表
df_long = df.melt(id_vars='Year', var_name='Month', value_name='Avg_Price')

# 4. 合并年月并生成datetime格式列
# 先转成标准datetime类型,再按需格式化为"1980-Jan"样式
df_long['DateTime'] = pd.to_datetime(df_long['Year'].astype(str) + '-' + df_long['Month'], format='%Y-%b')
df_long['DateTime'] = df_long['DateTime'].dt.strftime('%Y-%b')

# 5. 整理最终列结构
final_df = df_long[['DateTime', 'Avg_Price']].dropna()  # 可选:删除空值行

常见问题排查

  • 若之前用melt失败,大概率是没把年份索引转为普通列,或id_vars参数指定错误
  • 确保月份列名是标准英文缩写(Jan/Feb等),否则pd.to_datetime会报错,可手动补充月份映射或调整format参数适配你的数据格式
  • 如果CSV里的年份本身就是普通列,直接跳过第二步的reset_index,把id_vars设为对应的年份列名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:34:59