如何用Python/Pandas将CSV列头日期转为日期列并生成value列
用Pandas将日期作为列头的CSV转换为date/value长格式
直接用Pandas的melt()函数就能搞定宽格式到长格式的转换,这是处理这类需求的标准方法。以下是具体步骤和代码示例:
假设原始CSV结构(宽格式):
第一列可能是无关的标识列(比如"指标"),其余列头都是日期,单元格对应日期的数值:
指标,2023-01-01,2023-01-02,2023-01-03 数值,150,220,180
转换代码:
import pandas as pd # 读取原始CSV df = pd.read_csv("your_input_file.csv") # 将日期列头转为date列,单元格值转为value列 # id_vars指定保留的非日期列(如果没有可以去掉这个参数) df_long = df.melt( id_vars=["指标"], # 如果没有标识列,直接删除这一行 var_name="date", value_name="value" ) # 可选:移除不需要的标识列(如果有的话) df_long = df_long.drop("指标", axis=1) # 可选:将date列转换为datetime类型,方便后续日期操作 df_long["date"] = pd.to_datetime(df_long["date"]) # 保存为目标格式的CSV df_long.to_csv("output_file.csv", index=False)
无额外标识列的情况:
如果你的原始CSV里所有列头都是日期(没有第一列标识),代码更简洁:
import pandas as pd df = pd.read_csv("input.csv") df_long = df.melt(var_name="date", value_name="value") df_long["date"] = pd.to_datetime(df_long["date"]) df_long.to_csv("output.csv", index=False)
转换后目标格式:
date,value 2023-01-01,150 2023-01-02,220 2023-01-03,180
内容的提问来源于stack exchange,提问作者JOlay
相关产品推荐
相关产品推荐

