程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在python中使用pandas比较两个CSV时如何输出每个缺失的行

发布于2022-08-11 09:32     阅读(176)     评论(0)     点赞(4)     收藏(5)


我正在寻找比较两个 CSV。两个 CSV 将具有几乎相同的数据,但是第二个 CSV 将有 2 个相同的行,而 CSV 1 没有。我希望程序同时输出这 2 行,以便我可以看到 CSV 2 中存在哪一行,而不是 CSV 1,以及该行存在多少次。

这是我目前的逻辑:

import csv
import pandas as pd
import numpy as np

data1 = {"Col1": [0,1,1,2],
         "Col2": [1,2,2,3],
         "Col3": [5,2,1,1],
         "Col4": [1,2,2,3]}

data2 = {"Col1": [0,1,1,2,4,4],
         "Col2": [1,2,2,3,4,4],
         "Col3": [5,2,1,1,4,4],
         "Col4": [1,2,2,3,4,4]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

ds1 = set(tuple(line) for line in df1.values)
ds2 = set(tuple(line) for line in df2.values)
df = pd.DataFrame(list(ds2.difference(ds1)), columns=df2.columns)

print(df)

这是我目前的结果:

   Col1  Col2  Col3  Col4  
0     4     4     4     4

这是我想要的结果:

   Col1  Col2  Col3  Col4  
0     4     4     4     4
1     4     4     4     4

截至目前,即使 CSV 有两次该行,它也只输出该行一次。我该怎么做才能让它不仅显示丢失的行,而且每次它都在第二个 CSV 中?提前致谢!


解决方案


几乎总是有一个内置pandas函数可以做你想做的事情,这比尝试重新发明轮子要好。

df = df2[~df2.isin(df1).all(axis=1)]
# OR df = df2[df2.ne(df1).all(axis=1)]
print(df)

输出:

   Col1  Col2  Col3  Col4
4     4     4     4     4
5     4     4     4     4


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1659355/c5e7f08876fce6c1e2b0/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)