【问题标题】:Using Python to manipulate csv files: vlookup from another csv, insert columns, delete rows, loop使用 Python 操作 csv 文件:vlookup 从另一个 csv、插入列、删除行、循环
【发布时间】:2016-09-29 00:46:58
【问题描述】:

我有 100 个 csv 文件,每个文件都包含不同机构的出版数据,我想对所有这些文件执行相同的操作:

1.从单元格 B1 中获取机构名称。这总是在“at”或“at the”之后。例如“东北大学的出版物” 2.从另一个名为“代码”的 csv 文件中查找匹配的机构代码。 例如“1286”。 (东北大学)。 3.删除第1-14行(包括B1单元格中的机构名称) 4. 在文件中插入两个额外的列(A 列和 B 列),其标题如下:“Institution”和“InstitutionCode”,并在其中填写我有数据的所有行的相关信息。 (在上面的例子中,东北大学和 1286)。

我是 Python 新手,我发现很难从我找到的资源中整理出这个脚本。 谁能帮帮我?

以下是原始格式的数据图像

下面是所需结果的图片

【问题讨论】:

标签: python csv pandas match


【解决方案1】:

我可以给你代码,但我会向你解释如何自己编写代码。

  1. 读取代码文件并将机构和代码存储在字典中。 您可以在此处阅读有关读取 csv 文件的更多信息:https://pymotw.com/2/csv/ 或此处:https://pymotw.com/3/csv/。 每行将表示为字符串列表,因此您可以通过索引访问单元格元素。使机构名称为键,代码为值。

  2. 在 for 循环中一个一个地读取 csv 文件。我将这些称为输入文件。为您读取的每个输入文件打开一个新文件以进行写入。我将这些称为输出文件。

  3. 循环遍历 csv 文件中的行。您可以使用枚举来跟踪行号。您可以在此处找到相关信息,例如:http://book.pythontips.com/en/latest/enumerate.html

  4. 通过从第 0 行获取元素 1 来获取单元格 B1 的内容。

  5. 使用正则表达式查找机构名称。更多信息例如:http://dev.tutorialspoint.com/python/python_reg_expressions.htm 并从您在步骤 1 中制作的字典中获取机构代码。

  6. 继续循环遍历行,直到第一个元素等于“标题”。此行包含标题。将“Institution”和“InstitutionCode”写入输出文件,然后是您刚刚找到的标题。为此,请将您的行(字符串列表)转换为元组 (http://www.tutorialspoint.com/python/python_tuples.htm),并将其作为参数提供给 csv 编写器对象的 writerow 方法(请参阅步骤 1 中的链接)。

  7. 然后对于标题行之后的每一行,制作机构名称和代码的元组,然后是您刚刚读取的输入文件中的行中的信息,并将其作为参数提供给 writerow 方法csv writer 对象。

  8. 关闭输出文件。

要考虑的一件事是您是否需要在输出文件中的单元格内容周围加上引号。您可以在步骤 1 中的链接中了解这一点。字段分隔符也是如此。如果您不指定任何内容,则假定它们是逗号,但您可以更改此设置。

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多