比较两个CSV文件并使用Python基于比较结果更新一个CSV文件

时间:2017-07-13 04:05:14

标签: python csv pandas numpy

我是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上使用IronPython和Win7 64Bit。使用IronPython,因为我想用.Net代码集成一些东西。但是,我打开任何普通/默认的Python工具。

看起来Windows上的IronPython或Python在某种程度上不会读取CSV文件:我提到这个(http://pythonhow.com/data-analysis-with-python-pandas/)只是为了测试,然而,没有任何东西出现......不知道为什么?检查环境变量和Python文件夹,DLL和Libs。我究竟做错了什么? 希望我能正确解释。

请建议。感谢。

1 个答案:

答案 0 :(得分:0)

这是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中并且还没有输入国家时,它才会影响国家/地区中Col的值。

希望有所帮助