Python 3.x 比较python中具有不同数据集的两个csv文件
使用python,我想比较两个csv文件,但只比较第一个csv的第2行和第二个csv的第0行,但在新的csv文件中只打印出与比较的行不匹配的行 例如 currentstudents.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
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+的声誉,你也可以用向上或向下箭头对答案的质量/帮助性进行投票。如果解决方案不能回答问题,请留下评论。非常感谢。