根据条件分割数据框

2024-04-06

我正在尝试将我的数据框分成两个基于medical_plan_id。如果为空,则进入df1。如果不空入df2.

df1 = df_with_medicalplanid[df_with_medicalplanid['medical_plan_id'] == ""]
df2 = df_with_medicalplanid[df_with_medicalplanid['medical_plan_id'] is not ""]

下面的代码有效,但如果没有空字段,我的代码会引发TypeError("invalid type comparison").

df1 = df_with_medicalplanid[df_with_medicalplanid['medical_plan_id'] == ""]

遇到这样的情况该如何处理呢?

我的 df_with_medicalplanid 如下所示:

wellthie_issuer_identifier       ...       medical_plan_id
0                   UHC99806       ...                  None
1                   UHC99806       ...                  None

Use ==, not is, 测试相等性

同样,使用!=代替is not为了不平等。

is在Python中有特殊的含义。它返回True如果两个变量指向同一个对象,而==检查变量引用的对象是否相等。也可以看看之间有区别吗== and is在Python中? https://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is-in-python.

不要重复掩码计算

您正在创建的布尔掩码是逻辑中最昂贵的部分。这也是你想要的逻辑avoid手动重复,因为您的第一个和第二个蒙版彼此相反。因此,您可以使用按位取反 https://stackoverflow.com/questions/8305199/the-tilde-operator-in-python ~(“波形符”),也可通过operator.invert https://docs.python.org/3/library/operator.html#operator.inv,否定现有掩码。

空字符串与空值不同

可以通过以下方式测试相等与空字符串== '',但是相等与空值需要一个专门的方法:pd.Series.isnull https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.isnull.html。这是因为空值在 Pandas 使用的 NumPy 数组中表示,通过np.nan, and np.nan != np.nan 按设计 https://stackoverflow.com/a/1573715/9209546.

如果你想用空值替换空字符串,你可以这样做:

df['medical_plan_id'] = df['medical_plan_id'].replace('', np.nan)

从概念上讲,缺失值为 null 是有意义的(np.nan) 而不是空字符串。但与上述过程相反,即将 null 值转换为空字符串,也是可能的:

df['medical_plan_id'] = df['medical_plan_id'].fillna('')

如果差异很重要,您需要了解您的数据并应用适当的逻辑。

半最终解决方案

假设您确实有空值,请计算单个布尔掩码及其逆:

mask = df['medical_plan_id'].isnull()

df1 = df[mask]
df2 = df[~mask]

最终解决方案:避免额外的变量

作为程序员,您应该避免创建额外的变量。在这种情况下,不需要创建两个新变量,您可以使用GroupBy with dict给出数据帧的字典False (== 0) and True (== 1) 与您的掩码对应的键:

dfs = dict(tuple(df.groupby(df['medical_plan_id'].isnull())))

Then dfs[0]代表df2 and dfs[1]代表df1(也可以看看这个相关答案 https://stackoverflow.com/a/52947460/9209546)。上述的变体,您可以放弃字典构建并使用 PandasGroupBy方法:

dfs = df.groupby(df['medical_plan_id'].isnull())

dfs.get_group(0)  # equivalent to dfs[0] from dict solution
dfs.get_group(1)  # equivalent to dfs[1] from dict solution

Example

将以上所有内容付诸实践:

df = pd.DataFrame({'medical_plan_id': [np.nan, '', 2134, 4325, 6543, '', np.nan],
                   'values': [1, 2, 3, 4, 5, 6, 7]})

df['medical_plan_id'] = df['medical_plan_id'].replace('', np.nan)
dfs = dict(tuple(df.groupby(df['medical_plan_id'].isnull())))

print(dfs[0], dfs[1], sep='\n'*2)

   medical_plan_id  values
2           2134.0       3
3           4325.0       4
4           6543.0       5

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

根据条件分割数据框 的相关文章

  • matplotlib get_color 用于子图

    我正在按照这里的教程进行操作 https matplotlib org gallery ticks and spines multiple yaxis with spines html https matplotlib org galler
  • Pyjnius导入jar文件

    Pyjnius 允许您为 java 类创建 python 包装器 例如 Hardware autoclass org myapp Hardware 有没有办法像这样导入现有的 jar 文件 语法是什么样的 您可以将 jar 添加到 CLAS
  • 点击后 Dash DropDown 关闭

    我不希望下拉菜单在选择值后关闭 我希望它在我的页面上保持打开状态 我正在使用 dcc Dropdown dcc Dropdown id job type options self options placeholder Select one
  • 如何让 Discord 机器人显示“机器人正在输入...”状态?

    所以如果我有一个像这样的长命令 bot command pass context True async def longCommand ctx typing status sleep 10 bot say Done 不幸的是 在文档或此处没
  • 在 Pyinstaller、语音识别和 Pyttsx3 中使用“-w”时,PySimpleGUI 中出现“OSError:[WinError 6] 句柄无效”

    所以我用 PySimpleGUI 创建了一个程序 然后用 Pyinstaller 从它创建了 exe 文件 这是我的命令 pyinstaller hidden import pyttsx3 drivers hidden import pyt
  • Python 将 0 计算为 False

    在 Python 控制台中 gt gt gt a 0 gt gt gt if a print L gt gt gt a 1 gt gt gt if a print L L gt gt gt a 2 gt gt gt if a print L
  • Python服务器“通常只允许每个套接字地址使用一次”

    我正在尝试用 python 创建一个非常基本的服务器 它侦听端口 当客户端尝试连接时创建 TCP 连接 接收数据 发回某些内容 然后再次侦听 并无限期地重复该过程 这是我到目前为止所拥有的 from socket import server
  • 如何在Python中重命名virtualenv?

    我拼错了名字virtualenv使用以下方法初始化它 virtualenv vnev 我实际上打算创建一个名为的环境venv 尝试重命名后vnev文件夹到venv 我发现这并没有提供太多帮助 激活环境的名称仍然重命名旧的vnev mv vn
  • Django 单元测试数据库没有被拆除?

    我编写了一些单元测试来测试我的 Django 应用程序 特别是一个测试套件中包含大量代码setUp 功能 所述代码的目的是为数据库创建测试数据 是的 我了解固定装置 并且选择在这种情况下不使用它们 当我运行单元测试套件时 运行的第一个测试通
  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • 并行磁盘 I/O

    我有几个想要阅读的日志文件 不失一般性 假设日志文件处理如下 def process infilepath answer 0 with open infilepath as infile for line in infile if line
  • Python 日志记录 - 如何检查记录器是否为空

    我刚刚在我的应用程序中实现了日志记录 我想知道是否有一种方法可以检查记录器是否为空 我的想法是在我的脚本中设置两个处理程序 一个用于带水平仪的控制台WARNING 一个用于带级别的文件DEBUG 在脚本的最后 我需要检查是否CONSOLE记
  • Python 宏:用例?

    如果 Python 有一个类似于 Lisp Scheme 的宏工具 比如元Python https code google com p metapython 你会如何使用它 如果您是一名 Lisp Scheme 程序员 您会使用宏来做什么
  • Django - 从时间戳获取不同的日期

    我正在尝试按日期过滤用户 但直到我可以找到数据库中用户的第一个和最后一个日期为止 虽然我可以让我的脚本稍后过滤掉重复项 但我想从一开始就使用 Django 来完成此操作distinct因为它显着减少 我试过 User objects val
  • Python 柯里化任意数量的变量

    我正在尝试使用柯里化在 Python 中进行简单的函数添加 我找到了这个咖喱装饰器here https gist github com JulienPalard 021f1c7332507d6a494b def curry func def
  • 无法从源 pylance 解析导入烧瓶

    我正在学习 Python 课程的一部分是使用 Flask 设置网络服务器 我按照 Flask 安装文档执行了步骤 由于某种原因 flask 模块带有下划线 如下所示 当我将鼠标悬停时 我会得到如下附加信息 无法从源 pylance 解析导入
  • 如何在Python中仅列出顶级目录?

    我希望能够仅列出某个文件夹内的目录 这意味着我不需要列出文件名 也不需要其他子文件夹 让我们看看一个例子是否有帮助 在当前目录中我们有 gt gt gt os listdir os getcwd cx Oracle doc DLLs Doc
  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 在 python 中,VSCode 调试器不会单步执行外部代码。无法弄清楚如何编辑 launch.json 中的“justMyCode”

    我一直在提到https code visualstudio com docs python debugging justmycode https code visualstudio com docs python debugging jus
  • 我收到错误:rest_framework.request.WrappedAttributeError:'CSRFCheck'对象没有属性'process_request'

    urls py from django conf urls import url from django contrib import admin from django conf import settings from django c

随机推荐

  • $this 关键字的含义是什么?

    请解释一下这是为了什么 this and gt 代表 让我们以下面的代码为例 this gt convertNamesToCaptions order formId this 指的是当前对象 手册说 当从对象上下文中调用方法时 伪变量 th
  • Ruby 代码块与 javascript 匿名函数的区别

    我正在做我的第一次实习 一切进展顺利 我正在努力跟上其他程序员谈论的一切 有一天 一位高级程序员告诉我 Ruby 将代码块直接传递给函数的能力比在 JavaScript 中使用匿名函数要好得多 据我了解 JS 匿名函数完全相同 只是通过变量
  • 为什么链表使用指针而不是在节点内存储节点

    我之前在 Java 中广泛使用过链表 但我对 C 还很陌生 我正在使用项目中提供给我的这个节点类 效果很好 class Node public Node int data int m data Node m next 但我有一个问题没有得到
  • Python不创建日志文件

    我正在尝试实现一些日志记录来记录消息 我遇到了一些奇怪的行为 所以我试图找到一个最小的例子 我发现了here https docs python org 2 howto logging html logging to a file 当我将其
  • 删除JSF数据表行(来自不同数据库的行中的列)

    我有一个 JSF 数据表 它有三列 分别是 Work Type Desc Project Phase 和 Activity Desc 这些列来自两个不同的数据库表 这两个表的关系是一对多的 第一个表名称是 Work Type 它具有 1 W
  • 是否有更优雅的方法将不规则的数据转换为整洁的数据框

    我有一个数据框 其中包含一列参差不齐的数据 主题 其中每个主题都是一串字符 相邻主题之间用分隔符 本例中为 分隔 library lubridate events lt data frame date dmy c 12 6 2012 13
  • 如何从 QTreeview 中删除所有行和子行

    我不知道为什么我无法从 qtreeview 中删除所有行和子行 我使用 QStandardItemModel 作为模型 现在这是我的代码不起作用 可能是什么问题呢 QModelIndex FirstQModelIndex QModelInd
  • golang Reflect 获取闭包函数指针

    请检查代码 package main import fmt reflect func main factory func name string func return func fmt Println name f1 factory f1
  • SQL:如何根据类别进行选择?

    有两张桌子 categories and books我想根据给定的类别选择所有书籍 类别表 cat id book id 1 1 2 1 3 1 3 2 图书表 id name 1 abc 2 def 我试过了SELECT FROM cat
  • 表达式类型与对象、引用或函数类型相同吗?

    n4868 6 8 1 https timsong cpp github io cppwp n4868 basic types general 1 Note 1 https timsong cpp github io cppwp n4868
  • 在 Visual Studio Code 中设置 Cobol 制表符/缩进

    我刚刚在 Mac 上安装了 Visual Studio Code 让我发疯的是我无法设置制表符 缩进以匹配我喜欢的第 7 8 12 16 20 24 和 72 列的 Cobol 格式 我已经看到如何将制表符设置为 4 个空格 但这使我缩进到
  • Elm 中的序列 Http.get

    下面我有一个button尝试加载远程内容 import Post exposing Post import Html exposing import Html Events exposing import Http import Json
  • 如何使用 queryExecute 设置调试输出查询名称

    我想知道是否有办法使用 queryExecute 设置调试输出查询名称
  • 在敏捷/Scrum 用户故事中,多少细节才足够? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 通常的反应是足够详细就足够了 在我们目前正在忙的项目中 该项目不完整并且在没有任何类型的 brs 文档 用户故事的情况下移交给我们 我们得
  • 在 JFileChooser 中仅打开 .xml 文件

    我正在开发一个java应用程序 我只需要 xml文件 现在我只想显示 xml文件在JFileChooser每当用户想要保存文件或打开现有文件时 这个可以只显示吗 xml files 您可以使用 JFileChooser API 来完成您的任
  • C++ 类中'typedef' 会自动继承吗?

    我曾经认为 typedef 不会自动继承 但下面的代码快照暗示了一些不同的东西 include
  • 以编程方式禁用三星上的应用程序省电模式

    我是消息应用程序的开发人员 我的应用程序被置于自动省电模式 这会阻止消息通过 当我进入三星手机上的 应用程序省电 选项 设置 gt 电池 gt 应用程序省电 选项 时 我可以看到该选项对于某些应用程序 例如 WhatsApp 和 Faceb
  • 从 QRunnable 发出信号

    我正在尝试从一个发送信号QRunnable到我的主要QObject 但由于某种原因它没有收到它们 这是正确的方法吗 这是一个小测试用例 import sys from PyQt4 QtGui import QApplication from
  • Django:搜索短语中各个单词的首字母?

    我有一个名为的 Django 模型Author 有一个名为name 它不分为姓氏 名字 class Author models Model name models CharField max length 200 unique True 例
  • 根据条件分割数据框

    我正在尝试将我的数据框分成两个基于medical plan id 如果为空 则进入df1 如果不空入df2 df1 df with medicalplanid df with medicalplanid medical plan id df