Python 如何比较两个CSV';他在用字典吗?
我有两个大的csv文件,我想比较csv1中的column1和csv2中的column1。我可以使用Python列表来实现这一点,在这里我读取csv1并在list1中抛出column1,对csv2执行相同的操作,然后检查list1中的元素是否存在于list2中Python 如何比较两个CSV';他在用字典吗?,python,python-3.x,pandas,dictionary,Python,Python 3.x,Pandas,Dictionary,我有两个大的csv文件,我想比较csv1中的column1和csv2中的column1。我可以使用Python列表来实现这一点,在这里我读取csv1并在list1中抛出column1,对csv2执行相同的操作,然后检查list1中的元素是否存在于list2中 olist = [] def oldList(self): for row in self.csvreaderOld: self.olist.append(row[1]) nlist = [] def newLis
olist = []
def oldList(self):
for row in self.csvreaderOld:
self.olist.append(row[1])
nlist = []
def newList(self):
for row in self.csvreaderNew:
self.nlist.append(row[1])
def new_list(self):
return [item for item in self.olist if item not in self.nlist]
代码可以工作,但可能需要很长时间才能完成。我想看看是否可以改用dictionary,看看这是否会更快,这样我就可以比较dictionary1中的键和dictionary2中的键,但由于我的知识有限,到目前为止还没有成功比较。您可以将两个文件读入对象,并在一个循环中进行比较。 以下是idea的简短代码片段(不是类实现):
首先,如果您只想在
usecols
中提及一列,请更改读取CSV文件的方式,如下所示
df = pd.read_csv("sample_file.csv", usecols=col_list)
set(df.col.to_list()).difference(set(df2.col.to_list()))
第二,如果不进行行与行之间的比较,可以使用set difference,如下所示
df = pd.read_csv("sample_file.csv", usecols=col_list)
set(df.col.to_list()).difference(set(df2.col.to_list()))
如果是一个大的CSV文件,或者您打算继续使用表,我建议您使用Pandas模块 老实说,即使它是一个小文件,或者您不打算继续使用表,Pandas也是一个优秀的模块 据我所知(我可能弄错了),Pandas是读取CSV文件最快的库之一
import pandas as pd
df = pd.read_csv("path to your csv file", columns = ["column1", "column2"])
def new_list(df):
return [item for item in df["column2"].values if item not in df["column1"].values]
检查pandas系列中的项目时,使用.values
非常重要(在数据帧中提取列时,您将获得pandas系列)
您还可以使用list(df[“column1”])
和中建议的其他方法来确定列中是否包含值
例如:
df = pd.DataFrame({"column1":[1,2,3,4], "column2":[2,3,4,5]})
数据帧将是
column1 column2
1 2
2 3
3 4
4 5
而
new\u line
将返回[5]
嗨,Guy vandam',根据问题要求,你必须阅读这两个文件。嘿@ItzikChaimov,你说得对,我对列和文件编号感到困惑。这是一个类似的答案,您可以读取两个数据帧,df1和df2,并从每个数据帧中获取column1
。此外,在pandas中读取csv时,应该使用usecols=
而不是columns=
。我的错。。