Python 如何比较两个CSV';他在用字典吗?

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

我有两个大的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 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=
。我的错。。