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

从CSV指定行生成字典并合并同键值的Python实现问题

从指定目录CSV文件生成并合并字典的正确实现

需求回顾

  • 遍历目标目录下所有.csv文件
  • 每个文件以第一行内容为字典的键,第三行内容为对应键的值
  • 将每个文件生成的字典存入列表后,合并所有字典中相同键的值(对同键的值进行累加)

原代码问题分析

  1. df.to_dict()会将整个DataFrame转换为字典,不符合“仅取第一行键、第三行值”的规则,导致结构混乱
  2. 读取CSV时默认加载了空的第二行,生成了不必要的零值
  3. 变量名错误:napake_list未定义,实际应该使用slovar_list

方案1:使用原生csv模块(轻量直接)

原生csv模块可以精准控制读取行,避免多余数据的加载:

import os
import glob
from collections import Counter

root = "C:\\Users\\Public\\DiplomskaNaloga\\anomaly_count"
total_counter = Counter()

for file in glob.glob(os.path.join(root, '*.csv')):
    with open(file, 'r', encoding='cp1252') as f:
        reader = csv.reader(f)
        # 读取第一行作为键
        keys = next(reader)
        # 跳过第二行
        next(reader)
        # 读取第三行作为值(确保第三行存在,避免报错)
        try:
            values = next(reader)
        except StopIteration:
            print(f"警告:文件{file}不足三行,已跳过")
            continue
        
        # 生成当前文件的字典,过滤空键或空值(可选)
        current_dict = {k: int(v) for k, v in zip(keys, values) if k and v}
        # 合并到总Counter中
        total_counter.update(current_dict)

# 转换为普通字典
final_result = dict(total_counter)
print(final_result)

方案2:使用pandas调整读取逻辑

如果偏好使用pandas,需要指定只读取第一行和第三行,并构建目标字典:

import pandas as pd
import os
import glob
from collections import Counter

root = "C:\\Users\\Public\\DiplomskaNaloga\\anomaly_count"
total_counter = Counter()

for file in glob.glob(os.path.join(root, '*.csv')):
    # 只读取第0行(表头)和第2行(第三行,索引从0开始)
    df = pd.read_csv(file, encoding='cp1252', skiprows=[1], nrows=1)
    # 将行转换为字典,键是表头,值是第三行的内容
    current_dict = df.iloc[0].to_dict()
    # 过滤空值和零值,转换为整数(根据需求调整)
    current_dict = {k: int(v) for k, v in current_dict.items() if pd.notna(v) and v != 0}
    # 合并到总Counter
    total_counter.update(current_dict)

final_result = dict(total_counter)
print(final_result)

关键说明

  • 使用Counter的update方法可以自动累加相同键的值,比手动遍历合并更高效
  • 加入了异常处理(方案1)和空值过滤,避免因CSV格式不规范导致的报错
  • 两种方案都跳过了第二行,彻底避免了空行带来的零值问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:24:31