首页 > 解决方案 > 使用 Pandas 比较 2 个 csv 文件

问题描述

如何使用 Pandas 比较 2 个 csv 文件?

文件1:

1
2
3
4
5
5
6

文件2:

4
5
6
1

另一个文件中的预期结果:

2
3

标签: python-3.xpandasdataframe

解决方案


您可以使用此方法计算不同 csv 文件之间的差异。请记住将文件名更改为您的文件名。尝试这个:

with open('old.csv', 'r') as t1, open('new.csv', 'r') as t2:
    fileone = t1.readlines()
    filetwo = t2.readlines()

with open('update.csv', 'w') as outFile:
    for line in filetwo:
        if line not in fileone:
            outFile.write(line)

您还可以使用更复杂的方法来使用集合:

#!/usr/bin/env python3

import sys
import argparse
import csv


def get_dataset(f):
    return set(map(tuple, csv.reader(f)))


def main(f1, f2, outfile, sorting_column):
    set1 = get_dataset(f1)
    set2 = get_dataset(f2)
    different = set1 ^ set2

    output = csv.writer(outfile)

    for row in sorted(different, key=lambda x: x[sorting_column], reverse=True):
        output.writerow(row)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()

    parser.add_argument('infile', nargs=2, type=argparse.FileType('r'))
    parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
    parser.add_argument('-sc', '--sorting-column', nargs='?', type=int, default=0)

    args = parser.parse_args()

    main(*args.infile, args.outfile, args.sorting_column)

推荐阅读