Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 比较python中具有不同数据集的两个csv文件_Python 3.x_Csv - Fatal编程技术网

Python 3.x 比较python中具有不同数据集的两个csv文件

Python 3.x 比较python中具有不同数据集的两个csv文件,python-3.x,csv,Python 3.x,Csv,使用python,我想比较两个csv文件,但只比较第一个csv的第2行和第二个csv的第0行,但在新的csv文件中只打印出与比较的行不匹配的行 例如 currentstudents.csv包含以下信息 Susan,Smith,susan.smith@mydomain.com,8 John,Doe,john.doe@mydomain.com,9 Cool,Guy,cool.guy@mydomain.com,3 Test,User,test.user@mydomain.com,5 susan.sm

使用python,我想比较两个csv文件,但只比较第一个csv的第2行和第二个csv的第0行,但在新的csv文件中只打印出与比较的行不匹配的行

例如

currentstudents.csv包含以下信息

Susan,Smith,susan.smith@mydomain.com,8
John,Doe,john.doe@mydomain.com,9
Cool,Guy,cool.guy@mydomain.com,3
Test,User,test.user@mydomain.com,5
susan.smith@mydomain.com
john.doe@mydomain.com
test.user@mydomain.com
previousstudents.csv包含以下信息

Susan,Smith,susan.smith@mydomain.com,8
John,Doe,john.doe@mydomain.com,9
Cool,Guy,cool.guy@mydomain.com,3
Test,User,test.user@mydomain.com,5
susan.smith@mydomain.com
john.doe@mydomain.com
test.user@mydomain.com
比较两个csv文件后,应使用以下信息编写名为NewStudents.csv的新csv:

Cool,Guy,cool.guy@mydomain.com,3
这是我所拥有的,但这无法产生我所需要的…如果我在原始currentstudents.csv文件中省略除电子邮件地址以外的所有数据,那么下面的代码将起作用,但我不会在最终的csv文件中得到所需的数据

def newusers():

for line in fileinput.input(r'C:\work\currentstudents.csv', inplace=1):
    print(line.lower(), end='')


with open(r'C:\work\previousstudents.csv', 'r') as t1, open(r'C:\work\currentstudents.csv', 'r') as t2:
    fileone = t1.readlines()
    filetwo = t2.readlines()

with open(r'C:\work\NewStudents.csv', 'w') as outFile:
    for (line[0]) in filetwo:
        if (line[0]) not in fileone:
            outFile.write(line)
提前谢谢

此脚本写入NewStudents.csv:

NewStudents.csv的内容:

有选择权 对于小文件来说这无关紧要,但对于大文件来说,熊猫的矢量化操作将比使用csv多次迭代电子邮件要快得多。 用计算机读取数据 将数据与 问题中的列没有名称,因此列由列索引选择。 使用[all_students.\u merge==“left_only”]选择所需的新学生。 选择所有行和最后两列以外的所有列。 作为pd进口熊猫 读取两个csv文件 cs=pd.read_csv'currentstudents.csv',header=None ps=pd.read\u csv'previousstudents.csv',header=None 合并数据 所有学生=cs.mergeps,左开=2,右开=0,how='left',indicator=True 仅从左侧选择数据 新学生=所有学生。iloc[:,:-2][所有学生。_merge==“仅限左学生”] 保存不带索引或标题的数据 NewStudents.to_csv'NewStudents.csv',header=False,index=False NewStudents.csv 酷,伙计,酷。guy@mydomain.com3.
仅供参考:彻底回答问题非常耗时。如果你的问题得到了解决,那就接受最符合你需要的解决方案来表示感谢。接受检查位于答案左上角的向上/向下箭头下方。如果出现更好的解决方案,则可以接受新的解决方案。如果你有15+的声誉,你也可以用向上或向下箭头对答案的质量/帮助性进行投票。如果解决方案不能回答问题,请留下评论。非常感谢。