通过具有 NaN 值的数据帧更新数据帧

2024-01-08

我尝试更新 DataFrame

df1 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [5,6,7,8]})

通过另一个 DataFrame

df2 = pd.DataFrame(data = {'B' : [9, np.nan, 11, np.nan]}).

现在我的目标是更新df1 by df2并覆盖所有值(NaN值也)使用

df1.update(df2)

与常见用法相比,对我来说重要的是获得NaN值最终在df1。 但据我看到更新返回

>>> df1
      A   B
0     1   9
1     2   6
2     3   11
3     4   8

有没有办法得到

>>> df1
    A    B
0   1    9
1   2    NaN
2   3    11
3   4    NaN

没有建筑物df1手动?


我参加聚会迟到了,但我最近遇到了同样的问题,i.e.尝试更新数据框而不忽略像 Pandas 内置的 NaN 值update方法确实如此。 对于共享相同列名的两个数据帧,解决方法是连接两个数据帧,然后删除重复项,只保留最后一个条目:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [5,6,7,8]})
df2 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [9, np.nan, 11, np.nan]})

frames = [df1, df2]
df_concatenated = pd.concat(frames)
df1=df_concatenated.loc[~df_concatenated.index.duplicated(keep='last')]

根据索引,可能需要对输出数据帧的索引进行排序:

df1=df1.sort_index()

给你一个非常具体的例子df2没有 A 列,您可以运行:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [5,6,7,8]})
df2 = pd.DataFrame(data = {'B' : [9, np.nan, 11, np.nan]})

frames = [df1, df2]
df_concatenated = pd.concat(frames)

df1['B']=df_concatenated.loc[~df_concatenated.index.duplicated(keep='last')]['B']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过具有 NaN 值的数据帧更新数据帧 的相关文章

随机推荐

  • 在 Rider IDE 中创建类依赖关系图

    那里存在这个功能吗 怎样才能使用它呢 在该问题中 Rider 官方文档对我来说毫无用处 UPDATE 现在完全支持项目图功能骑士2020 3 https www jetbrains com rider whatsnew 2020 3 ver
  • 如何在 OpenCV 中访问 3d 矩阵的切片

    我想将 592 个 47x47 数组存储到 47x47x592 矩阵中 我创建了 3d 矩阵 如下所示 int sizes 47 47 592 Mat 3dmat 3 sizes CV 32FC1 然后我想我可以通过使用一组范围来访问它 如
  • ZF2 服务定位器

    我对 zf2 很陌生 正在尝试它 我有一个视图助手 我需要它来访问表对象 在我的控制器中我可以运行 this gt getServiceLocator 但理想情况下 我会在我的视图助手中运行它 不幸的是 我似乎无法从我的视图助手中访问它 我
  • 使用 Javamail API 和 IMAP 批量获取邮件正文

    有没有一种方法可以通过使用 Javamail API 对 IMAP 服务器进行一次调用来获取多封电子邮件的邮件正文 我知道我可以使用 Message getContent 调用获取给定消息的正文 但这最终会为每个单独的消息调用 imap 服
  • 是否可以将解决方案部署到 Web 应用程序,使其功能仅在此 Web 应用程序中可见?

    我有一个具有多个站点 网络范围功能的解决方案 SP2010 我想将此解决方案部署到一个特定的网络应用程序 这些功能应该只显示在驻留在该 Web 应用程序中的站点 网站中 通过增加安全控制入口对于我的解决方案 我能够将解决方案部署到特定的 W
  • Adb 传输协议错误。没有这样的文件或目录

    我尝试在模拟器中运行我的 Android 应用程序intelliJ 13 我将模拟器配置为Nexus 4跑步android 4 4 2 with ARMcpu 我得到以下错误 Waiting for device C Program Fil
  • Firemonkey TTabControl 可以复制 VCL TPageControl.OnChanging 事件吗?

    我正在运行 Delphi Dx 西雅图 在 Delphi VCL 的 TPageControl 中 有一个 onChanging 事件 您可以在其中阻止页面控件更改选项卡的 procedure TForm1 pgc1Changing Sen
  • android:用毕加索创建圆形图像

    这个问题已经被提出 并且对我正在使用的 Picasso 版本做出了承诺 如何使用 Picasso 将圆形位图发送到 ImageView 我是毕加索的新手 我唯一使用过的是 Picasso with context load url resi
  • 在连接到 SSAS OLAP 多维数据集的 Excel 中按键排序

    我搜索了互联网和 StackOverflow 但没有找到这个问题的答案 我通过 SSAS 创建了一个带有日期维度的 OLAP 多维数据集 维度的属性之一是活动日历月 The NameColumn值的格式如 January 2015 Febr
  • 使用 StructureMap 在 ASP.NET MVC 3 RC2 中进行操作过滤器依赖注入

    我一直在研究 ASP NET MVC RC2 中的 DI 支持 我已经为 NHibernate 的每个请求实现了会话并且需要注入ISession进入我的 工作单元 操作过滤器 如果我直接引用 StructureMap 容器 ObjectFa
  • SwiftUI 如何添加带有回调的自定义修饰符

    在 SwiftUI 中你可以编写如下代码 List ForEach users id self user in Text user onDelete perform delete 我尝试添加功能 onDelete我的自定义组件的语法方法 s
  • 如何删除 CMake 中的特定系统包含目录

    有没有办法告诉 CMake 排除某些系统包含路径 例如 我定义了 string h 两次 一次在 usr include c v1 libc 中 一次在 usr include 中 当我编译时出现以下错误 error functions t
  • 改变箭头的箭头()

    我想知道是否可以更改用 绘制的箭头的箭头arrows 我查看了文档 但我发现我可以更改行尾但不能更改箭头 plot c 1 10 arrows 0 0 10 10 任何帮助表示赞赏 如中所解释的 arrow 您可以使用length and
  • 基于jsonb寻找合适的EAV结构

    我想知道在 jsonb 上构建 EAV 的正确方法是什么 我有Attribute gt Values表与标准 EAV 中的表一样 CREATE TABLE attribute values id INTEGER attribute id I
  • 重构代码后使用 NetDataContractSerializer 进行反序列化时出现问题

    我遇到过这样的情况 我使用 NetDataContractSerializer 序列化一些 NET 对象 并将 XML 存储在数据库中 作为记住应用程序中这些对象的状态的一种方式 最近我刚刚遇到第一种情况 即属性和类型名称的某些代码重构导致
  • 虚拟连续内存与物理连续内存

    虚拟连续内存在物理上也总是连续的吗 如果不是 如何在物理上不连续的 RAM 块上分配和映射虚拟连续内存 感谢详细的回答 简短的回答 您不必关心 除非您是内核 驱动程序开发人员 对你来说都是一样的 更长的答案 相反 实际上连续的内存是通常不会
  • Angular 2:子路由的多个

    使用 Angular 2 有什么方法可以让子路由不显示到主标签中
  • 如何在 GitKraken 中查看提交?

    使用 GitKraken 来检查提交似乎是不可能的 正如您所看到的 没有选项可以签出较旧的提交 只能Cherrypick commit但我不知道这有什么好处 编辑 我可以通过控制台使用另一个 git 程序 git bash 结帐 现在在 G
  • 如何使用 --header 选项通过 Siege 发送 cookie?

    我刚刚开始使用 Siege 在新的 Web 服务器上进行负载 压力测试 我正在尝试测试我的资源 性能最重的脚本 但该脚本需要cookie 在 siege 中使用 header 选项的正确格式是什么 我尝试过这个但没有运气 siege hea
  • 通过具有 NaN 值的数据帧更新数据帧

    我尝试更新 DataFrame df1 pd DataFrame data A 1 2 3 4 B 5 6 7 8 通过另一个 DataFrame df2 pd DataFrame data B 9 np nan 11 np nan 现在我