Pandas:对 NaN 值进行“或”运算

2023-12-02

我有一个包含 3 列的 DataFrame,每列的值为NaN。 我想根据这 3 列填充第四列,这样or操作应用于列:如果第一个不是NaN,取其值,否则检查第二个,依此类推。 自从一个NaN值不是一个False, the or运算符不能按原样使用。 这是我附带的代码,但它不是很 Pythonic 或 Pandas-ic。有内置函数可以做到这一点吗?或者,您还有其他建议吗?

import pandas as pd
import numpy as np

nan = np.NaN
df = pd.DataFrame({"a": [nan, 1, nan], "b": [2, nan, nan], "c": [nan, nan, 3]})
#   a   b   c
# 0 NaN 2.0 NaN
# 1 1.0 NaN NaN
# 2 NaN NaN 3.0

nan_to_false = lambda val: False if pd.isna(val) else val

df["a_or_b_or_c"] = df.apply(lambda row: nan_to_false(row["a"]) or nan_to_false(row["b"]) or nan_to_false(row["c"]), axis=1)
# 0    2.0
# 1    1.0
# 2    3.0


想法是回填缺失值,然后选择第一列:

df["all columns"] = df.bfill(axis=1).iloc[:, 0]

如果需要过滤列名称:

df["a_or_b_or_c"] = df[['a','b','c']].bfill(axis=1).iloc[:, 0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas:对 NaN 值进行“或”运算 的相关文章

随机推荐

  • 从 SELECT 中的多个选择中获取值

    我有一个选择框 允许您选择多个选项 我需要使用 JavaScript 访问所有选定的值 可能是值数组 这是获取所选值数组的最佳方法 mySelect val Return an array of the selected options v
  • 升级到 python 3.0 的提示? [复制]

    这个问题在这里已经有答案了 因此 随着 Python 3 0 现在是 3 1 的最终版本 很多人都面临着如何升级而不因向后不兼容而丢失一半代码库的担忧 人们有哪些最佳技巧可以避免切换到下一代 Python 时几乎不可避免地出现的许多陷阱 也
  • FFmpeg - PHP 错误代码 127

    我正在尝试从 php 执行 FFmpeg 我已经安装了FFmpeg php 并且扩展位于modules目录中 并且它显示在phpinfo中 FFmpeg 工作正常 因为我可以在终端中运行命令并输出视频 但是 当我尝试使用以下脚本从 php
  • 检查 SharePoint 365 中的工作簿是否已锁定进行编辑

    我在 SharePoint 365 中有一个文档库 我使用本地 Excel 宏文件通过 VBA 在线打开 SharePoint 中的工作簿 这适用于类似的代码 location https mycompany sharepoint com
  • 尝试使用 Python 和 Selenium 迭代地滚动和抓取网页

    我最近问了一个问题 参考这里 Python Web 抓取 Beautiful Soup Selenium 和 PhantomJS 仅抓取整个页面的一部分 这有助于确定我在抓取滚动时动态更新的页面的所有内容时遇到的问题 然而 我仍然无法使用
  • 使用pip在django中安装错误

    我是 Django 世界的新手 我想将其从 pip 安装到我的 Windows 中 但在安装时出现此错误 C Users xxxx gt pip install django Collecting django Could not inst
  • 在 Jdbc 中执行带有绑定变量的 SQL 查询

    我有一个这样的sql查询 select DEPT DEPTNO as DEPTNO1 DEPT DNAME as DNAME1 DEPT LOC as LOC1 EMP COMM as COMM1 EMP EMPNO as EMPNO1 E
  • Android:在 webview 中下载在 Oreo 中不起作用,它在 Oreo 设备中强制关闭

    下载管理器代码在 Android 中不起作用WebView适用于 Oreo 设备 但它适用于旧版本 如果不是 Oreo 设备 它会提示 正在下载文件 并被下载 但如果是 Oreo 它会强制关闭 崩溃 下面是我正在使用的代码 片段 webVi
  • 数字后跟大写 L

    什么是512L意思是 或者可能是任何数字后跟大写 L example uint sec然后是一些带有表达式的代码 sec 512L 取出来的XV6代码 mkfs c L代表long 这创建了一个类型的文字long l也可以 但看起来像1 所
  • 连接表上的 where 子句

    对于下表 ROOM ID NAME 1 ROOM 1 2 ROOM 2 房间状态 ID ROOM ID OPEN DATE 1 1 1 2000 01 01 00 00 00 2 2 1 2000 01 01 00 00 00
  • 向现有列添加自动增量,而不影响当前记录值

    我想将列类型更改为AUTO INCREMENT在现有的MyISAM1数据库表 数据库目前有数千条记录 其中列值非常重要 当前值不受影响至关重要 我想从最新的最高值开始递增 我在 phpmyadmin 中尝试了此操作 由 phpmyadmin
  • 编译 SCSS 时出现误报“未定义变量”错误

    使用 ruby compass gem 编译 SCSS 时收到错误消息 run var lib gems 1 8 gems compass 0 12 2 bin compass compile out unchanged sass part
  • 从 python dataframe 列中删除非 json 对象行

    我有一个数据框 该列包含 json 对象和字符串 我想删除不包含 json 对象的行 下面是我的数据框的样子 import pandas as pd df pd DataFrame A hello world a 5 b 6 c 8 usa
  • 仅支持横向界面方向

    我有使用横向右方向的应用程序 在视图控制器中我使用 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation interfaceOrientation Return
  • 系统 python 版本处于活动状态,而不是本地 pyenv 版本

    激活虚拟环境后如何检查使用的python版本是否正确 我尝试了which python3和which python 但两个输出都指示系统python版本而不是本地pyenv版本 它仍在使用我的本地版本还是我的安装有问题 这是命令行输出 Do
  • 如何根据 ViewModel 属性值添加淡入/淡出动画?

    我有一个视图模型它公开了字符串属性页面工具栏可见这可以是true or false private string pageToolBarVisible public string PageToolBarVisible get return
  • 有什么方法可以修改 JavaScript 中的“this”吗?

    我找到了这个答案 如何在javascript中修改 this 但我不喜欢它 肯定有办法somehow modify this 这是一个例子 function var a function v v 10 a function console
  • 标题栏颜色变化问题

    我想动态更改标题栏的颜色 即 有人单击按钮 它会更改颜色 但是 我似乎无法让它填满整个标题栏 这种情况在模拟器和 Nexus One 上都会发生 有任何想法吗
  • 在 Spark 中提取 hive 表分区 - java

    Spark 有没有办法只提取分区列名称 我使用的解决方法是运行 show extended table like table name using HiveContext 你可以使用类HiveMetaStore客户端直接查询HiveMeta
  • Pandas:对 NaN 值进行“或”运算

    我有一个包含 3 列的 DataFrame 每列的值为NaN 我想根据这 3 列填充第四列 这样or操作应用于列 如果第一个不是NaN 取其值 否则检查第二个 依此类推 自从一个NaN值不是一个False the or运算符不能按原样使用