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

如何使用Python解析特定复杂CSV数据并格式化输出?

我来帮你梳理下怎么把这个特殊结构的CSV转换成你想要的格式,用Python来实现的话很直观,咱们一步一步来:

第一步:先理清CSV的特殊结构

先拆解你的CSV内容:

  • 前5行是元数据行:每行第一个字段是键(比如id、company),后面两个字段是重复的对应值
  • 第6行是指标定义行:第一个字段是indicator,后面两个是要跟踪的指标名称(Share Price、Common Shares Outstanding)
  • 从第7行开始是时间序列数据:每行第一个字段是日期,后面两个是对应指标的数值
第二步:用Python代码实现转换

我们可以用内置的csv模块读取数据,再按逻辑整理成目标格式:

import csv

# 替换成你的CSV文件路径
with open('your_data.csv', 'r') as f:
    reader = csv.reader(f)
    rows = list(reader)

# 1. 提取元数据,生成开头的键值对字符串
metadata = {}
for row in rows[:5]:
    key = row[0].strip()
    # 取第一个非空值(因为后面两个值完全重复)
    value = row[1].strip()
    metadata[key] = value

# 拼接成你要的开头格式,若需截断长键名可取消下面注释
header_str = ' '.join([f"{k}:{v}" for k, v in metadata.items()])
# 截断长键名示例:比如把超过15个字符的键名末尾加省略号
# header_str = ' '.join([f"{k[:15]}...:{v}" if len(k)>15 else f"{k}:{v}" for k, v in metadata.items()])

# 2. 提取指标名称
indicators = [col.strip() for col in rows[5][1:]]

# 3. 处理时间序列数据,整理成对应记录
data_records = []
for row in rows[6:]:
    date = row[0].strip()
    values = [val.strip() for val in row[1:]]
    record = f"Date:{date} {' '.join([f'{indicators[i]}:{values[i]}' for i in range(len(indicators))])}"
    data_records.append(record)

# 4. 合并输出结果
full_output = header_str + '\n' + '\n'.join(data_records)
print(full_output)
第三步:输出效果示例

运行代码后会得到类似这样的结果(如果启用了长键名截断,会和你给出的示例更接近):

id:247341 company:1 800 FLOWERS COM INC ticker:FLWS financial year end (month):6 industry code:103002
Date:2011-11-04 Share Price:2.72 Common Shares Outstanding:65046.232
Date:2012-02-06 Share Price:2.89 Common Shares Outstanding:65065.558
Date:2012-05-04 Share Price:3.04 Common Shares Outstanding:64788.687

如果不用代码,用Excel手动处理也可以:

  • 把前5行转置成列,用&函数拼接成键:值的格式
  • 再把日期和指标数据对应起来拼接成每行的记录

不过代码方式更适合批量处理这类特殊结构的数据~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:07:39