我是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。我究竟做错了什么? 希望我能正确解释。
请建议。感谢。
答案 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的值。
希望有所帮助