【问题标题】:Compare two CSV file and update one CSV file based on compared result using Python使用 Python 比较两个 CSV 文件并根据比较结果更新一个 CSV 文件
【发布时间】:2017-07-15 13:45:24
【问题描述】:

我是 Python 新手,我编写了这段代码来比较两个 CSV 文件。这个想法是: 我的第一个 CSV 文件只有一列:

第一个 CSV

    ColA
    ----

     A
     B
     C

我的第二个 CSV 文件是这样的:

     Country    ColA  ColB
     -------------------------
      US          A
     Ind          B      
                  C     AU K-

我想要的是,如果第一个 CSV 文件的 ColA 记录与第二个 CSV 文件的 ColA 匹配 然后,我想解析 ColB 的“AU K-”值以仅获取“AU”并在第二个 CSV 文件所在的国家/地区进行更新。我的输出应该是这样的:

所以,我的第二个 CSV 文件/输出文件将如下所示:

  Country    ColA  ColB
   ---------------------
   US           A
   Ind          B      
   AU           C     

编写以下代码来查找匹配项: 但是,我在测试时没有在控制台中获得输出。控制台只是出现和消失。

如何保留控制台以便我可以阅读匹配项?另外,如果值匹配,如何更新第二个 CSV?

以下是我的代码示例:

import pandas
 with open('D:\Project\SourceFile.csv') as f:
r = pandas.read_csv(f)
with open('D:\Project\Searchfile.csv','r') as w:
x = pandas.read_csv(w)

col = w['ColA']
for line in w:
    for col in w:
        for row in r:
            if row in col:
                print(line)

注意:我在 VS 2015 和 Win7 64 位上使用 IronPython。使用 IronPython,因为我想将一些东西与 .Net 代码集成。但是,我可以使用任何普通/默认的 Python 工具。

看起来 IronPython 或 Windows 上的 Python 不知何故没有读取 CSV 文件:我提到这个 (http://pythonhow.com/data-analysis-with-python-pandas/ ) 只是为了测试,但是,什么都没有出现..不知道为什么?添加了已检查的环境变量和 Python 文件夹、DLL 和库。我究竟做错了什么? 希望我解释正确。

请提出建议。谢谢。

【问题讨论】:

  • 您对w 进行了两次迭代。那应该行不通。而且你的缩进也关闭了。
  • 如何开启?你能详细说明答案吗?任何解决方案链接都会有所帮助。

标签: python csv pandas numpy


【解决方案1】:

这就是 Pandas 和 Numpy (Pandas 0.15 Python 3) 的样子

import pandas as pd
import numpy as np

w["Country"] = np.where((w["ColA"].isin(r['ColA'].tolist())) & (~ pd.notnull(w["Country"])) ,w["ColB"], w["Country"]) 
# Np.where(condition, if true,if false)

只有当 w 中的 ColA 的值也在 r 的 ColA 中并且还没有输入国家时,它才会影响 w 中的 ColB 在 Country 中的值。

希望对你有帮助

【讨论】:

猜你喜欢
  • 2017-02-19
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多