按行 pandas 具有非空值的第一列名称

2023-11-27

我想知道第一年各个项目的收入。

鉴于以下数据框:

ID  Y1      Y2      Y3
0   NaN     8       4
1   NaN     NaN     1
2   NaN     NaN     NaN
3   5       3       NaN

我想按行返回具有非空值的第一列的名称。

在这种情况下,我想返回:

['Y2','Y3',NaN,'Y1']

我的目标是将其作为一列添加到原始数据框中。

下面的代码大部分都可以工作,但确实很笨拙。

import pandas as pd
import numpy as np

df = pd.DataFrame({'Y1':[np.nan, np.nan, np.nan, 5],'Y2':[8, np.nan, np.nan, 3], 'Y3':[4, 1, np.nan, np.nan]})
df['first'] = np.nan

for ID in df.index:
row = df.loc[ID,]
for i in range(0,len(row)):
    if (~pd.isnull(row[i])):
        df.loc[ID,'first'] = row.index[i]
        break

returns:

   Y1  Y2  Y3  first
0 NaN  8   4   Y2   
1 NaN NaN  1   Y3   
2 NaN NaN NaN  first
3  5   3  NaN  Y1   

有谁知道更优雅的解决方案?


您可以申请first_valid_index使用带有 axis=1 的 lambda 表达式来指定数据框中的每一行。

>>> df.apply(lambda row: row.first_valid_index(), axis=1)
ID
0      Y2
1      Y3
2    None
3      Y1
dtype: object

要将其应用到您的数据框:

df = df.assign(first = df.apply(lambda row: row.first_valid_index(), axis=1))

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

按行 pandas 具有非空值的第一列名称 的相关文章

随机推荐

  • 如何相对于鼠标位置旋转图像?

    我正在尝试做这样的效果 http metatroid com articles在页面顶部 但我无法仅使用他们给出的代码来旋转它 var img image if img length gt 0 var offset img offset f
  • 如何告诉 google bot 跳过部分 HTML?

    有很多关于相反情况的信息 当人们尝试在 HTML 中包含内容时 谷歌机器人可以看到这些内容 但用户不可见 就我而言 我需要相反的东西 从谷歌机器人隐藏一些 html 问题是如何 闪存不是答案 也不想使用花哨的 ajax 东西 主要是因为我立
  • 获取 Cocoa 中的当前壁纸

    我正在使用此代码来获取当前壁纸 NSURL imageURL NSWorkspace sharedWorkspace desktopImageURLForScreen NSScreen mainScreen 这工作正常 但是当我将图片文件夹
  • 使用 PrimeFaces 手动添加/加载 jQuery 会导致未捕获的类型错误

    我正在使用 PrimeFaces 3 5 和 JSF 2 0 我想使用 jQuery 插件 因此我将 jQuery 包含在我的 web 应用程序中
  • Python 从子文件夹导入

    我正在尝试对每个学生在单独文件夹中的一些 python 提交进行评分 为此 我想运行一个函数 例如 f 我明白 如果我当前的路径与文件所在的路径相同 我可以简单地执行以下操作 import filename filename f 然而 还有
  • 可以推荐 .NET 的 ZedGraph 图表库吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在为我的公司做一个项目 在研究股票市场的过程中 我需要将一些不同类型和平均复杂度的图表集成到C 中 我在互联网上找到了这个免费图书馆 ZedGraph 如果您遇到过它 您会推荐使
  • 使用 @font-face 并在当前 HTML 页面中嵌入 SVG 字体

    我有一个想要分发的独立 HTML 文档 没有任何外部依赖项 我在本文档中使用了非标准字体 只有我的部分用户会安装该字体 对于那些没有安装该字体的用户 我在顶部的嵌入 SVG 文档中包含了该字体的副本 在此示例中我使用的是单字形字体 真实文档
  • 计算 numpy 数组中一行中重复元素的数量

    我正在寻找一种快速方法来执行以下操作 假设我有一个数组 X np array 1 1 1 2 2 2 2 2 3 3 1 1 0 0 0 5 我不是在寻找元素的简单频率 而是在寻找连续的频率 所以第一个 1 重复 3 次 比 2 重复 5
  • Word 2016 中的导航窗格:强制折叠标题视图的 VBA 代码

    我正在尝试编写一个在打开 docx 文档时运行的 VBA 宏 我希望它强制显示导航窗格 然后强制所有标题 任何级别 以折叠模式显示 我正在尝试使用宏记录器获取折叠命令的代码 当我录制宏时 我所拥有的只是 ActiveWindow Docum
  • 类型错误:预期的字符串或缓冲区

    我有这个简单的代码 import re sys f open findallEX txt r lines f readlines match re findall A Z lines print match 我不知道为什么我会收到错误 预期
  • Winforms(.NET Core 3)是否支持所有.NET Framework控件

    我们刚刚迁移到 NET 正在尝试使用 C NET 重新创建一个旧项目 我们听说 NET Core 是新项目的最佳选择 我们对此使用 WinForms 非常感兴趣 所以我一直在尝试 Visual Studio 2019 预览版 16 5 0
  • Gradle:排除依赖项的包

    是否可以排除一个package来自 Android Gradle 依赖项 因此它不会最终出现在 APK 中 As dependencies compile com facebook android facebook android sdk
  • EmptyDataTemplate 和 EmptyDataText 在 GridView 中不起作用

    我似乎也无法得到EmptyDataTemplate or EmptyDataText of a GridView上班 我正在获取GridViewde codebehind 中的内容并使用 using 附加它们DataBind 我试过让它们作
  • Android 共享首选项的默认值

    我正在尝试了解 Android 的 SharedPreferences 我是初学者 并且对此了解不多 我为我的应用程序首选项实现了这个课程 public class Preferences public static final Strin
  • 数组获取比其他值大的最小值

    我有以下数组 float arr 0 0 1f 0 0 1f 0 0 2f 选择大于的最小值的最优雅的方法是什么0或者比其他值大 我尝试过使用Min and Select From OrderBy First 但直到现在还没有运气 使用LI
  • linux perf record:计数(-c)和频率(-F)选项之间的差异

    我试图了解 c 和 F 选项性能记录确实如此 但我无法解释我所看到的 我正在运行这些命令 perf record a F
  • AS3 设置 Sprite 容器的宽度和高度

    好吧 我对这个问题感到困惑 我知道这似乎是一个很简单的问题 我不明白为什么我无法弄清楚 但我仍然无法解决 我几乎放弃了 问题是这样的 我有一个精灵容器 它应该保存一堆视频的缩略图 我可以用所有视频和整个作品填充容器 但显然如果我添加一堆视频
  • 在虚拟环境中使用代理进行 pip 安装

    我在公司笔记本电脑上使用 Ubuntu 虚拟机 它使用代理服务器连接到互联网 经过一番研究 我发现如何使用安装模块pip install与代理 例如 使用此命令我可以安装我的 virtualenv 模块 sudo pip install p
  • 表单字段之间的间距

    我有一个 HTML 表单元素
  • 按行 pandas 具有非空值的第一列名称

    我想知道第一年各个项目的收入 鉴于以下数据框 ID Y1 Y2 Y3 0 NaN 8 4 1 NaN NaN 1 2 NaN NaN NaN 3 5 3 NaN 我想按行返回具有非空值的第一列的名称 在这种情况下 我想返回 Y2 Y3 Na