如何使用 pandas 查找列的最大值并根据条件按顺序排列它们?

2024-01-02

我有以下数据框

import pandas as pd
import numpy as np
d = {

    'ID':[1,2,3,4,5,6],
    'Price1':[5,9,4,3,9,np.nan],
    'Price2':[9,10,13,14,18,np.nan],
    'Price5':[5,9,4,3,9,np.nan],
    'Price6':[np.nan,10,13,14,18,np.nan],
    'Price10':[9,10,13,14,18,np.nan],
    'Price3':[5,9,4,3,9,np.nan],
    'Price4':[9,10,13,14,18,np.nan],
    'Price7':[np.nan,9,4,3,9,np.nan],
    'Price8':[np.nan,10,13,14,18,np.nan],
    'Price9':[5,9,4,3,9,np.nan],
    'Type':['A','A','B','C','D','D'],


}
df = pd.DataFrame(data = d)
df

如何使用 pandas 查找列的最大值并根据条件按顺序排列它们?

查找价格 1、价格 2、价格 5、价格 6、价格 10 中的最大值,并将新列添加为 maxA

查找 Price 3、Price 4、Price 7、Price8、Price9 中的最大值,并将新列添加为 maxB

预期输出:

import pandas as pd
import numpy as np
d = {

    'ID':[1,2,3,4,5,6],
    'Price1':[5,9,4,3,9,np.nan],
    'Price2':[9,10,13,14,18,np.nan],
    'Price3':[5,9,4,3,9,np.nan],
    'Price4':[9,10,13,14,18,np.nan],
    'Price5':[5,9,4,3,9,np.nan],
    'Price6':[np.nan,10,13,14,18,np.nan],
    'Price7':[np.nan,9,4,3,9,np.nan],
    'Price8':[np.nan,10,13,14,18,np.nan],
    'Price9':[5,9,4,3,9,np.nan],
    'Price10':[9,10,13,14,18,np.nan],
     'Type':['A','A','B','C','D','D'],
    'maxA1':[9,10,13,14,18,np.nan],
    'maxA2':[9,10,13,14,18,np.nan],
    'maxA3':[5,10,13,14,18,np.nan],
    'maxA4':[5,9,4,3,9,np.nan],
    'maxA5':[np.nan,9,4,3,9,np.nan],
    'maxB1':[9,10,13,14,18,np.nan],
    'maxB2':[5,10,13,14,18,np.nan],
    'maxB3':[5,9,4,3,9,np.nan],
    'maxB4':[np.nan,9,4,3,9,np.nan],
    'maxB5':[np.nan,9,4,3,9,np.nan],


}
df = pd.DataFrame(data = d)
pd.set_option('max_columns',25)
df

Use:

c1 = ['Price1', 'Price2', 'Price5','Price6','Price10']
col1=[f"maxA{i+1}" for i in range(len(c1))]
#['maxA1', 'maxA2', 'maxA3', 'maxA4', 'maxA5']
c2 = ['Price3', 'Price4', 'Price7', 'Price8', 'Price9']
col2=[f"maxB{i+1}" for i in range(len(c2))]
#['maxB1', 'maxB2', 'maxB3', 'maxB4', 'maxB5']

a = pd.DataFrame(abs(np.sort(-df[c1],axis=1)),columns=col1)
b=pd.DataFrame(abs(np.sort(-df[c2],axis=1)),columns=col2)

df_new=pd.concat([df,a,b],axis=1)
print(df_new)

   ID  Price1  Price2  Price5  Price6  Price10  Price3  Price4  Price7  \
0   1     5.0     9.0     5.0     NaN      9.0     5.0     9.0     NaN   
1   2     9.0    10.0     9.0    10.0     10.0     9.0    10.0     9.0   
2   3     4.0    13.0     4.0    13.0     13.0     4.0    13.0     4.0   
3   4     3.0    14.0     3.0    14.0     14.0     3.0    14.0     3.0   
4   5     9.0    18.0     9.0    18.0     18.0     9.0    18.0     9.0   
5   6     NaN     NaN     NaN     NaN      NaN     NaN     NaN     NaN   

   Price8  Price9 Type  maxA1  maxA2  maxA3  maxA4  maxA5  maxB1  maxB2  \
0     NaN     5.0    A    9.0    9.0    5.0    5.0    NaN    9.0    5.0   
1    10.0     9.0    A   10.0   10.0   10.0    9.0    9.0   10.0   10.0   
2    13.0     4.0    B   13.0   13.0   13.0    4.0    4.0   13.0   13.0   
3    14.0     3.0    C   14.0   14.0   14.0    3.0    3.0   14.0   14.0   
4    18.0     9.0    D   18.0   18.0   18.0    9.0    9.0   18.0   18.0   
5     NaN     NaN    D    NaN    NaN    NaN    NaN    NaN    NaN    NaN   

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

如何使用 pandas 查找列的最大值并根据条件按顺序排列它们? 的相关文章

随机推荐

  • 我可以欺骗 HttpRequest.Current.Request.IsLocal 吗?

    我正在运行一个 Web 应用程序 如果在本地运行 它会显示一些调试行为 资源字符串周围的引号等 并且我想在我无法访问互联网的会议上在我的笔记本电脑上演示该应用程序 所以它必须是本地的 应用程序使用 HttpContext Current R
  • 复制文件而不覆盖

    我只是似乎无法在命令行上找到一种方法来表示 将目录 A 中的所有文件复制到目录 B 中 但如果该文件已存在于目录 B 中 则不要覆盖它 无论哪个文件较新 并且不要提示我 我已经经历过复制 移动 xcopy 和 robocopy 我能得到的最
  • 使用 DSC 无人值守安装 .net Framework 4.6.2

    我正在尝试以自动方式在许多服务器上安装 4 6 2 不实施 WSUS 或其他方式 我的目标是利用 PowerShell DSC 因为我们正在以这种方式配置其他方面 但是 我尝试过的资源 xWindowsUpdate 中的 xHotfix 和
  • 从 linq 在新对象中创建新属性

    所以我正在执行 linq to sql 查询 结果以 IEnumerable 形式出现 从此列表中 我为返回的每个结果创建一个新对象 我已经使用的存储过程正在按我想要的顺序返回对象 我们有一个排行榜 查询后结果按降序排列 我遇到问题的部分是
  • 如何解决“无法解析:org.webrtc:google-webrtc”?

    我构建了一个 android webrtc 应用程序 但是当将 webrtc 添加到 android studio 项目时 实现 org webrtc google webrtc 1 0 我收到此错误 无法解析 org webrtc goo
  • JSP/Glassfish 的 PHP .htaccess 模拟

    如何限制 JSP Glassfish 中的文件 PDF 访问 以便只能从源代码而不是直接的 url 打开它们 对于 PHP 项目 我使用 htaccess webapp 下的任何内容WEB INF无法通过直接 URL 访问目录 但应用程序代
  • 如何在sql Developer oracle中使用spool命令

    亲爱的 我无法使用 spool 命令 它不起作用或者我没有做正确的事情 我正在尝试将查询结果保存在 txt 文件中 也尝试使用 csv 保存 select csv from table但它也不起作用 所以我写的是 set echo off
  • 从 Hibernate 3 迁移到 4 会减慢启动速度

    我们正在尝试将我们的项目从 hibernate 3 迁移到 hibernate 4 一切工作正常 但问题是启动 我们不使用 JPA 我们直接使用 hibernate 以及 xml 文件和映射文件
  • SVG 渐变不起作用

    我有一个 svg 我需要用渐变填充它 css 是由脚本添加的 如果你使用单一 RGB 颜色 一切都可以正常工作 但使用渐变时 SVG 会产生白色背景 脚本后的结果代码
  • RibbonComboBox 选定的图库项目在鼠标离开时恢复为旧值

    我已将 WPF 功能区替换为最新的库 组合框选择更改会触发数据网格的重新加载 我的 RibbonComboBox 有问题 如果我将鼠标光标移出所选项目 则所选项目将恢复为旧项目 如果我将光标保持在所选项目上直到数据网格重新加载完成 则新值将
  • scala 中什么时候必须使用分号?

    我正在学习如何在 Scala 中编程 并被告知分号在 Scala 中是可选的 因此 考虑到这一点 我尝试使用以下没有分号的嵌套代码块 但是 它会在 Scala REPL 中引发错误 scala gt val a 1 val b a 2 va
  • 在Java中查找字符串中子字符串的第二次出现

    我们得到一个字符串 比如说 itiswhatitis 和一个子串 比如说 is 我需要找到的索引 i 当字符串 is 在原始字符串中第二次出现 String indexOf is 在这种情况下将返回 2 在这种情况下我希望输出为 10 使用
  • 在VB中替换单个字符串中的多个字符

    是否可以在 Visual Basic 中替换字符串中的多个字符 例如 mary had a little lamb 全信a必须改为z all m必须改为y all t必须改为x只需一行代码 结果是Replace是一个字符串 可以连接多个替换
  • 玩2.5,休眠:表未映射

    我在下面遇到了异常 例外是 org hibernate hql internal ast QuerySyntaxException 用户未映射 调用此代码时发生了这种情况 TypedQuery
  • 变量检查,有些不对劲

    我花了一些时间在互联网上搜索此代码的部分来解决它 但是一旦进入我的代码 它似乎不起作用 程序执行到这一步后 无论我输入什么 它都不会显示密码强度 而是显示一个空格 if EnteredPassword isupper or EnteredP
  • 将 nil 赋给 TImage.Picture.Graphic 来清除图片后,如何再次使用它?

    在下面的代码中 我清除了btnSaveClick中的图片 稍后在btnLoadClick中我想将图片分配给图像 但它给出了AV 因为Graphic对象不存在 我怎样才能完成任务 procedure TForm1 btnSaveClick S
  • GCC 4.4:避免在 gcc 中对 switch/case 语句进行范围检查?

    这只是 4 4 之前的 GCC 版本的问题 在 GCC 4 5 中已修复 https gcc gnu org bugzilla show bug cgi id 43462 是否可以告诉编译器 switch 中使用的变量适合提供的 case
  • 如何使用 Material Components Web Foundations

    使用材质组件 我试图弄清楚如何使用组件基础的方法 举个例子 我有 div class mdc linear progress div class mdc linear progress buffering dots div div clas
  • Java - 具有显示箭头的按钮

    我想要一个 Java 中的按钮 它显示箭头 就像键盘上一样 到目前为止我有这个 JButton arrowUp new JButton JButton arrowDown new JButton v JButton arrowLeft ne
  • 如何使用 pandas 查找列的最大值并根据条件按顺序排列它们?

    我有以下数据框 import pandas as pd import numpy as np d ID 1 2 3 4 5 6 Price1 5 9 4 3 9 np nan Price2 9 10 13 14 18 np nan Pric