外部合并后保留 Dataframe 列数据类型

2024-06-23

当您使用“外部”合并在某些值上合并两个索引数据帧时,python/pandas 会自动将 Null (NaN) 值添加到它无法匹配的字段。这是正常行为,但它会更改数据类型,您必须重新说明列应具有的数据类型。

fillna() or dropna()合并后似乎没有立即保留数据类型。我需要一个适当的表结构吗?

通常我会跑numpy np.where(field.isnull() etc)但这意味着运行所有列。

有解决方法吗?


这实际上应该只是一个问题bool or int数据类型。float, object and datetime64[ns]已经可以持有NaN or NaT而不改变类型。

因此,我建议使用新的可为空数据类型。您可以使用Int64为你的整数和'boolean'对于您的布尔列。这两个现在都支持缺失值<NA>: pandas._libs.missing.NAType

import pandas as pd

df = pd.DataFrame({'a': [1]*6, 'b': [1, 2]*3, 'c': range(6)})
df2 = pd.DataFrame({'d': [1, 2], 'e': [True, False]})

df2['d'] = df2['d'].astype('Int64')
df2['e'] = df2['e'].astype('boolean')
df2.dtypes
#d      Int64
#e    boolean
#dtype: object

df.join(df2)
#   a  b  c     d      e
#0  1  1  0     1   True
#1  1  2  1     2  False
#2  1  1  2  <NA>   <NA>
#3  1  2  3  <NA>   <NA>
#4  1  1  4  <NA>   <NA>
#5  1  2  5  <NA>   <NA>

df.join(df2).dtypes
#a      int64
#b      int64
#c      int64
#d      Int64    <- dtype preserved
#e    boolean    <- dtype preserved

With Int64/Bool64填充值仍然符合您指定的值,并且仅当您填充无法适合当前数据类型的值时,该列才会向上转换。

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

外部合并后保留 Dataframe 列数据类型 的相关文章

随机推荐

  • 什么是 art.go?为什么它被认为是在 bp 文件中编写条件的一种方法?

    我正在尝试找到一种在 bp 文件中写入条件的方法 我在这里找到了一个文档 https android googlesource com platform build soong HEAD README md https android go
  • Visual Studio 上的 AWS C++ SDK 链接器错误

    我正在尝试将 aws sdk ec2 链接到我的应用程序 但我从 Visual Studio 2013 中收到链接器错误 我已成功编译 SDK 并链接 我的项目设置上的 aws sdk core lib 和 aws sdk ec2 lib
  • 活动选项卡固定在 Visual Studio 的左侧

    我最近在 Visual Studio 中安装了一些工具 例如 Resharper 和 Power tools 现在我的 Visual Studio 似乎是 smarter 比以前 每当我切换到另一个选项卡时 该活动选项卡将被设置为第一个选项
  • web.config 中的 IIS 虚拟目录

    我认为 IIS 有问题这个博客 https web archive org web 20201127004607 http geekswithblogs net ranganh archive 2005 04 25 37609 aspx给我
  • 接收事件时闪烁选项卡标题

    我有一个基于选项卡的聊天应用程序 用户可以在不同的选项卡项目中与几个人聊天 我想通过闪烁选项卡标题来通知用户传入消息 以防用户正在与接收消息的选项卡以外的其他用户聊天 我如何在 WPF 中实现这一目标 一些例子将非常有用 此致 莫尔泰萨 您
  • 为什么 IIS 在 RoleEntryPoint.OnStart 返回之前接受请求?

    我正在使用 Azure 示例从这里 http msdn microsoft com en us gg433178在计算模拟器上 我发现如果我做OnStart 在我的班级继承自RoleEntryPoint在 Web 角色接受 HTTP 请求之
  • 如何在odoo中继承或覆盖js文件?

    我想改变一个功能js文件 怎么做 有什么方法可以重写该函数吗 addons web static src js views form common js 我想改变function get search result function sea
  • ValueError解析时间字符串

    我编写了这段代码来将不寻常的时间转换为 EPOCH x Mon Jul 25 19 04 30 GMT 01 00 2016 print datetime strptime x a b d H M S Z z Y strftime s 但是
  • libpng 中未解析的外部 png_set_longjmp_fn

    动态加载 libpng dll 时 从 libpng13 dll 升级到版本 1 5 后 编译器开始报告此未解析的外部 png set longjmp fn 这是怎么回事以及如何解决 图书馆被改变以更好地隐藏内部结构 所以你需要做的是 ty
  • 无法从静态上下文引用非静态方法encode(byte[]) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions package com cordys
  • Gradle:如何从 jar 中排除特定包?

    我们有一个与某些已删除的需求相关的包 但我们不想删除该代码 因为将来有可能再次需要它 因此 在我们现有的 ant 构建中 我们刚刚将此包排除在我们的 jar 中编译之外 这些类无法编译 因为我们还删除了它们的依赖项 因此它们不能包含在构建中
  • 使用 SharedStringTable 和 .net 中的 xml sdk 设置文本值

    我有一段代码 如下 可以获取Excel中特定单元格的文本 但我不知道如何修改此文本以更改单元格文本 public static void UpdateTextCell string docName string text uint rowI
  • Xcode:签署“gRPC-C++-gRPCCertificates-Cpp”需要开发团队

    当您为 Mac 应用程序或其他 iOS 编译 Xcode 时 您可能会看到以下错误 签署 gRPC C gRPCCertificates Cpp 需要开发团队 在签名和功能编辑器中选择开发团队 我的Xcode版本 11 2 1 苹果操作系统
  • 检测另一个进程的模式对话框

    我想检测另一个进程 例如 process exe 当前是否正在显示对话框 有没有办法在 C 中做到这一点 看看我是否可以获得对话框的句柄 我尝试过 Spy 的查找窗口工具 当我尝试将查找器拖动到对话框顶部时 它不会突出显示对话框 而是填充详
  • 升级到 Mac OS X 10.9 / Xcode 5.0.1 后出现 C++ 链接错误

    升级到 Mac OS X 10 9 Xcode 5 0 1 后 创建共享库 dylib 的命令行失败 并出现多个未定义的符号 clang dynamiclib install name test dylib o o test dylib U
  • ItemsControl、ItemsPanel 和 ItemsPresenter(Silverlight、XAML)

    我对这三个术语完全困惑 什么时候使用哪个 它们是哪个控件的子级 有什么关系 说这是树是否正确 项目控制 gt 项目演示器 gt 项目面板 ItemsControl从概念上讲是一个容纳项目的控件 尝试简单地将此控件视为零个或多个对象的支架 I
  • 如何检查特定目录的权限?

    我知道使用ls l directory directory filename 告诉我文件的权限 如何对目录执行相同的操作 我显然可以使用ls l在层次结构中较高的目录上 然后滚动直到找到它 但这太痛苦了 如果我使用ls l在实际目录中 它给
  • 使用 3D 加速进行图形渲染

    我们为巨大的数据集生成图表 我们谈论的是每秒 4096 个样本 每张图 10 分钟 简单计算得出 每个线图有 4096 60 10 2457600 个样本 每个样本都是双精度 8 字节 精度 FP 此外 我们在一个屏幕上渲染多个线图 最多可
  • Windows 中的 Pipe fork 和 execvp 类似物

    这是在 unix 中使用 pipeline fork exec trio 的简单演示 include
  • 外部合并后保留 Dataframe 列数据类型

    当您使用 外部 合并在某些值上合并两个索引数据帧时 python pandas 会自动将 Null NaN 值添加到它无法匹配的字段 这是正常行为 但它会更改数据类型 您必须重新说明列应具有的数据类型 fillna or dropna 合并