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

如何将带日期索引的DataFrame列堆叠后按指定格式导出CSV

实现代码(Python + Pandas)

首先安装依赖(如果未安装):

pip install pandas

核心处理代码:

import pandas as pd

# 假设df是你已经读入的源DataFrame,比如通过pd.read_csv读取源文件得到
# 此处为模拟示例数据的代码,实际使用时替换为你自己的读入逻辑
df = pd.DataFrame({
    'date': ['2013-01-01', '2014-01-01', '2015-01-01'],
    'Allu_1': [2.00, 3.09, 4.79],
    'Allu_2': [1.45, 2.35, 4.89],
    'Alluv_3': [3.54, 9.01, 10.04],
    'year': [2013, 2014, 2015]
})

# 可选:如果你需要把列名里的Alluv统一改成Allu,加上这行代码,和示例输出格式对齐
df = df.rename(columns=lambda x: x.replace('Alluv', 'Allu') if x.startswith('Allu') else x)

# 1. 把需要堆叠的数值列转为长表
melted = df.melt(
    id_vars=['year'],  # 保留year列作为拼接标签的字段
    value_vars=[col for col in df.columns if col.startswith('Allu')],  # 筛选所有要堆叠的数值列
    var_name='col_name',
    value_name='value'
)

# 2. 生成要求格式的标签列
melted['label'] = melted['col_name'] + '_' + melted['year'].astype(str)

# 3. 按要求导出CSV,无表头、无索引
# 如果需要用制表符分隔就加sep='\t',用空格分隔可以加sep=' '
melted[['label', 'value']].to_csv('output.csv', header=False, index=False, sep='\t', float_format='%.2f')

代码说明

  • 核心用pandas的melt方法实现宽表转长表,自动完成多列纵向堆叠的逻辑
  • float_format='%.2f'保证输出的数值统一保留两位小数,和示例格式一致
  • 如果不需要修改列名,去掉重命名的步骤即可,会直接用原始列名和年份拼接生成标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:27:04