比较两个 pandas 数据框

2023-12-25

我有两个 pandas 数据框定义如下:

_data_orig = [
    [1, "Bob", 3.0],
    [2, "Sam", 2.0],
    [3, "Jane", 4.0]
]
_columns = ["ID", "Name", "GPA"]

_data_new = [
        [1, "Bob", 3.2],
        [3, "Jane", 3.9],
        [4, "John", 1.2],
        [5, "Lisa", 2.2]
    ]
_columns = ["ID", "Name", "GPA"]

df1 = pd.DataFrame(data=_data_orig, columns=_columns)
df2 = pd.DataFrame(data=_data_new, columns=_columns)

我需要找到以下信息:

  • 查找删除其中df1是原始数据集,df2是新数据集
  • 我需要找到两者之间现有记录的行更改。示例 ID == 1 应比较 df2 的 ID == 1 以查看每行是否有任何列值发生更改。
  • 找到 df2 诗句 df1 的任何添加内容。示例返回 [4, "John", 1.2] 和 [5, "Lisa", 2.2]

对于查找行中更改的操作,我想我可以查看 df2 并检查 df1,但这似乎很慢,所以我希望在那里找到更快的解决方案。

对于其他两个操作,我真的不知道该怎么做,因为当我尝试比较两个数据帧时,我得到:

ValueError: Can only compare identically-labeled DataFrame objects

熊猫版本:'0.16.1'

建议?


setup

m = df1.merge(df2, on=['ID', 'Name'], how='outer', suffixes=['', '_'], indicator=True)
m

adds

m.loc[m._merge.eq('right_only')]
or
m.query('_merge == "right_only"')

deletes

m.loc[m._merge.eq('left_only')]
or
m.query('_merge == "left_only"')


0.16.1 answer

setup

m = df1.merge(df2, on=['ID', 'Name'], how='outer', suffixes=['', '_'])
m

adds

m.loc[m.GPA_.notnull() & m.GPA.isnull()]

deletes

m.loc[m.GPA_.isnull() & m.GPA.notnull()]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较两个 pandas 数据框 的相关文章

随机推荐

  • 如何根据条件相互比较行并仅保留一行

    我有如下要求 如果存在多于 1 个注释 姓名 姓氏和门的组 并且其中之一包含 NULL 则仅保留具有 Null 注释的记录并丢弃其他记录 IF Null 不是其中之一 并且注释包括 NOT AVAILABLE 和 REQUIRES 保留不可
  • 如何使用 Slick 对过滤器的结果进行计数?

    我面临一个我想简化的问题 很确定 事实上我做错了 Wanted 我想计算 id 1 的用户数量 在 SQL 语言中 我们假设它是这样的 SELECT COUNT FROM users WHERE id 1 Code 我使用的是 提升 形式的
  • 如何拥有棒棒糖开关按钮

    我想为我的应用程序提供棒棒糖样式的切换按钮 我怎样才能实现这个按钮 使它在旧版本的android上也看起来像这样 要在旧版本的 Android 上使用 Lollipop 样式切换按钮 您应该在布局 xml 文件中使用 SwitchCompa
  • 将 gcloud 与 Jenkins 结合使用

    我一直在尝试编写一个定期轮询 Google Cloud Storage 的脚本 当我正常运行它时 这工作得很好 但是如果我将它作为构建步骤包含在 Jenkins 中 它会给出一个403 Forbidden错误 这是因为没有gcloud au
  • 如何防止选择后关闭菜单?

    我正在使用jQuery 自动完成 http api jqueryui com autocomplete小部件 灵感来自这个问题 https stackoverflow com questions 6043506 jquery ui auto
  • 在 Angular 8 中使用 cli 命令添加 Web Worker 后出现错误

    Angular 8 为网络工作者添加了更好的支持 我没有运气让它发挥作用 有人知道我做错了什么吗 这是官方指南 https angular io guide web worker我跟着 使用此 cli 命令我生成了 Web Worker n
  • 在 scipy 中创建稀疏矩阵时,覆盖而不是添加重复的三元组

    在 scipy 中 要从三重格式数据 行 列和数据数组 创建稀疏矩阵 默认行为是对所有重复项的数据值求和 我可以更改此行为以覆盖 或不执行任何操作 吗 例如 import scipy sparse as sparse rows 0 0 co
  • React-native expo FileSystem.downloadAsync 损坏的图像

    我们有 RN 应用程序和服务器来存储图像 尝试根据用户从服务器下载一堆图像 并将它们显示在 RN 应用程序中 有时图像会被损坏 或者根本不显示 所以我必须重新加载应用程序才能使其工作 这甚至在很多时候都不起作用 或者清除存储并一次又一次下载
  • Jquery 和 JSF 找到 的特定 id [重复]

    这个问题在这里已经有答案了 我正在寻找匹配id for 输入文本在 JSF 中使用 Jquery 但它不起作用 我不知道为什么 JSF CODE
  • 无法更改 RVM 默认值

    我在更改默认 ruby 时遇到问题 运行 OS X Lion macbook work rvm list rvm rubies ruby 1 9 2 p290 x86 64 ruby 1 9 2 p318 x86 64 如您所见 1 9 2
  • 如何在单行上打印DataFrame

    With import pandas as pd df pd read csv pima data csv print df head 2 打印内容会自动格式化为多行 num preg glucose conc diastolic bp t
  • 是否可以知道用户是否正在文本字段中输入或删除字符?

    我正在使用文本字段委托方法 shouldChangeCharactersInRange 我想知道是否有任何方法可以判断用户是否正在删除字符或键入字符 有人知道吗 谢谢 BOOL textField UITextField textField
  • 如何在 macOS Mojave 上设置环境变量?

    我正在 macOS Mojave 上安装 THERMUS ROOT 热模型包 步骤之一 解压缩后 如下 设置环境变量 THERMUS 以指向包含 THERMUS 代码的顶级目录 我真的不知道该怎么办 我在 stackoverflow 上看过
  • 为什么 Javascript 中的 charCodeAt 的行为似乎与 PHP 的 chr 不同?我正在尝试实现base64

    我在 php 代码中使用了按位运算符 它返回 base64 中的解码字符串 我想实现与 javascript 相同的 php 代码 据我所知chr https www php net manual en function chr php相当
  • 单击后退按钮强制刷新页面

    我有 2 个 asp net 页面 页面 A 和页面 B 单击页面 A 上的链接时 用户将被重定向到页面 B 在页面 B 上时 如果用户单击浏览器的后退按钮 我需要强制调用页面 A 的页面刷新 我如何实现这个功能 注意 代码需要兼容不同浏览
  • 如何检查麦克风是否已插入 iPhone?

    我在 AVFoundation 框架中使用 AVAudioRecorder 我想知道如何检查麦克风设备是否已插入 在 iPod Touch 上 BOOL inputAvailable AVAudioSession sharedInstanc
  • 将 WCF 请求记录到数据库

    我想将 WCF 服务项目中的每个请求 xml 消息记录到数据库中 请建议我哪种方法是最好的和首选的方法 1 使用idispatchmessageinspector接口 http msdn microsoft com en us librar
  • DC.js 数据表的自定义文本过滤器

    我正在构建一个仪表板来显示一些数据 我有几个图表和一个列出所有数据的表格 我正在尝试添加搜索功能来过滤图表 我有很多公司以及每个公司的一些数据 因此 如果我搜索 Appl 则数据表中只会列出以 Appl 开头的公司 并且图表将反映这一点 当
  • 如何通过另一个 data.frame 中的某些列合并行名?

    我想知道是否有更好的方法将两个 data frames 放入一个中 将 rowname 视为一列 然后按此列与其他一些 data frame 合并 我知道我可以执行以下操作 df1 rn lt row df1 all lt merge df
  • 比较两个 pandas 数据框

    我有两个 pandas 数据框定义如下 data orig 1 Bob 3 0 2 Sam 2 0 3 Jane 4 0 columns ID Name GPA data new 1 Bob 3 2 3 Jane 3 9 4 John 1