Python csv:合并具有相同字段的行

2024-03-23

我正在尝试将几行 csv 数据合并为一长行,前提是两个单元格包含相同的数据。例如,采用以下 csv:

one, two, three
1, 2, 3
4, 5, 6
7, 8, 9
1, 1, 1
4, 4, 4

如果两行在 row[0] 处共享相同的值,我希望将第二行附加到第一行。所以我的最终产品应该是这样的:

one, two, three
1, 2, 3, 1, 1, 1
4, 5, 6, 4, 4, 4
7, 8, 9

到目前为止,这是我的尝试:

import csv

uniqueNum = []
uniqueMaster = []
count = -1
with open("Test.csv", "rb") as source:
    reader = csv.reader(source)
    header = next(reader)
    for row in reader:
        if row[0] not in uniqueNum:
            uniqueMaster.append(row)
            uniqueNum.append(row[0])
            count = count + 1
            for row in reader:
                if row[0] in uniqueNum:
                    uniqueMaster[count].append(row)

with open("holding.csv","wb") as result:
    writer = csv.writer(result)
    writer.writerow(header)
    for row in uniqueMaster:
        writer.writerow(row) 

对我来说一切看起来都不错,但我的脚本仅输出以下内容:

one, two, three
1, 2, 3, ['1', '1', '1']

这显然是错误的,原因有两个。首先,它不会迭代整个 csv,其次,附加值被压缩到一个单元格中,而不是单个单元格中。如果有人对使其正常工作有任何建议,我将非常感激!


请改用字典。从代码的中间开始(假设我已经声明了一个名为 my_dict 的字典):

 for row in reader:
    if row[0] in my_dict.keys():
       my_dict[row[0]].extend(row)
    else:
       my_dict[row[0]]=row
  #...now we are at the bottom of your code, writing to the csv
 for v in my_dict.values():
    writer.writerow(v)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python csv:合并具有相同字段的行 的相关文章

随机推荐

  • 有没有更好的方法在字符串列表上使用 strip() ? - 蟒蛇[重复]

    这个问题在这里已经有答案了 现在我一直在尝试对字符串列表执行 strip 我这样做了 i 0 for j in alist alist i j strip i 1 有更好的方法吗 你可能不应该使用list作为变量名 因为它是一种类型 不管
  • 内连接与 IN

    SELECT C FROM StockToCategory STC INNER JOIN Category C ON STC CategoryID C CategoryID WHERE STC StockID StockID VS SELE
  • Rx 中的历史调度程序

    我有以下代码 我尝试重播序列 但 PostWorkItem 总是为 null 我不明白为什么 下面的代码给出了堆栈溢出错误 Task
  • 锁内锁

    我想知道这种构造是否会导致错误 lock sync something lock sync something lock sync something 我已经运行了这段代码 看起来不错 但也许在某些情况下可能会引发错误 lock是一个包装器
  • 如何指定头文件引入的库依赖

    假设在 CMake 项目中 我有一个内置到库中的源代码 a cpp void f some code 我有一个标题 b h void f struct X void g f 我还有另一个文件 main cpp include b h int
  • 在 PHP 中压缩字符串的最佳方法[重复]

    这个问题在这里已经有答案了 我正在使用 gzcompress json encode arr 9 压缩数组 所以我使用 json encode 将数组转换为字符串 然后使用 gzcompress 进行压缩 但我找不到结果字符串大小的太大差异
  • 通过 jasperreport 打印整个 HashMap

    我需要通过 jasperreport 打印整个地图 Example Column1 Column2 key1 val1 key2 val2 key2 val2 应该选择什么数据源 报告来源应包含哪些内容 PS 我不想像 P key11 那样
  • Highcharts:确保 y 轴 0 值位于图表底部

    我在页面上输出一系列高图表 在某些情况下 指定时间段内的所有数据可能返回 0 值 在这种情况下 图表如下所示 http jsfiddle net charliegriefer KM2Jx 1 http jsfiddle net charli
  • 光标所在位置未输入字符

    在我的 Ace 编辑器中 滚动条出现后 字符被输入 但不是光标所在的位置 见下图 出了什么问题 该代码在我的开发环境中似乎工作正常 我注意到我的开发环境的字体比我的产品环境的字体大 Dev env 产品环境 我不明白为什么会有差异 以及这是
  • 如何在 Mono/Windows 上使用 gecko-sharp 嵌入 Gecko?

    Gecko 是 Firefox 的渲染引擎 使用 gecko sharp 可以将其嵌入到任何 Mono GTK 程序中 有一个名为的示例应用程序GladeSharp浏览器 http developer novell com wiki ind
  • Sql Server 中的标识列

    为什么 Sql 服务器不允许在一张表中存在多个 IDENTITY 列 任何具体原因 你为什么需要它 SQL Server 会跟踪单一值 当前标识值 对于每个表IDENTITY列 因此每个表只能有一个标识列
  • R - 来自 SpatialPolygons 列表的 SpatialPolygonsDataFrame

    我正在寻找一种从 SpatialPolygons 列表创建 SpatialPolygonsDataFrame 的方法 下面是一个多边形列表的示例 应从中创建包含列表中所有多边形的 SpatialPolygonsDataFrame 编辑 Sp
  • 致命错误:未捕获 OAuthException:(#803) 您请求的某些别名不存在

    致命错误 未捕获的 OAuthException 803 您请求的某些别名不存在 0 309479102458745 在第 1039 行的 base facebook php 中抛出 我的应用程序工作正常 然后突然许多用户收到此错误 0 3
  • Codeigniter 增加会话超时不起作用

    我是 codeigniter 框架的新手 我遇到页面会话超时问题 现在我已经启用了 ip 匹配 用户代理匹配 但不起作用 我尝试过的另一种方法是更新 2 1 4 库文件并将其复制到我的系统中 文件夹但这也不起作用 请帮助我解决会话超时问题
  • Elasticsearch 中对象聚合的嵌套数组

    Elasticsearch 中的文档是这样索引的 文件1 task completed 10 tagged object category cat count 10 category cars count 20 文件2 task compl
  • 将参数添加到“队列新建”对话框

    我基于 DefaultTemplate xaml 构建了一个自定义构建流程模板 并添加了一些参数 它们在 构建定义 窗口中显示良好 但我找不到将它们显示在 队列新构建 对话框的参数选项卡上的方法 我希望这是可能的 我宁愿不需要为参数的每个变
  • 如果目录为空,如何跳过 grunt 任务

    我正在使用 grunt contrib 的concat and uglify处理一些 javascript 的模块 目前如果src js 是空的 他们仍然会创建一个 空 连接文件 以及缩小版本和源映射 我想要检测是否src js 继续之前文
  • Rails 3 验证:存在 => false

    这是我期望的一个非常简单的问题 但我在指南或其他地方找不到明确的答案 我的 ActiveRecord 有两个属性 我希望其中一个存在 另一个为零或空白字符串 我该如何做相当于 presence gt false 的事情 我想确保该值为零 v
  • 为什么将字符串文字传递给调用 std::format 的模板无法编译?

    以下代码片段无法在最新版本的 MSVC Visual Studio 2022 17 2 2 上编译 相同的代码片段似乎在以前的编译器版本上运行得很好 include
  • Python csv:合并具有相同字段的行

    我正在尝试将几行 csv 数据合并为一长行 前提是两个单元格包含相同的数据 例如 采用以下 csv one two three 1 2 3 4 5 6 7 8 9 1 1 1 4 4 4 如果两行在 row 0 处共享相同的值 我希望将第二