You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas如何以每行最大值为基准反转单元格顺序重排行值

实现方法

你需要的按行最大值为基准反转数值顺序的逻辑,本质是对每行有效数值做行内极值对称映射,映射公式为:转换后值 = 行内最大值 + 行内最小值 - 原始值,空值(NaN)会自动保留原有位置,完全匹配你给出的转换规则。

完整代码

import pandas as pd
import numpy as np

# 构造测试数据集
list_df = {'Order#1' : [5,8,np.nan], 
           'Order#2' : [4,6,1],  
           'Order#3' : [2,2,3], 
           'Order#4' : [1,1,2], 
           'Order#5' : [3,7,np.nan], 
           'Order#6' : [np.nan, 5, np.nan], 
           'Order#7' : [np.nan, 4, np.nan], 
           'Order#8' : [np.nan, 3, np.nan]}
df = pd.DataFrame(data=list_df)

# 核心转换逻辑:逐行做对称映射
df_result = df.apply(lambda row: row.max() + row.min() - row, axis=1)

逻辑校验

以你给出的参考转换行(最大值为5、最小值为1,极值和为6)为例,转换结果完全匹配规则:

  • 原始值5 → 6-5 = 1
  • 原始值4 → 6-4 = 2
  • 原始值3 → 6-3 = 3 (中间值保留不变)
  • 原始值2 → 6-2 = 4
  • 原始值1 → 6-1 = 5
  • 所有原始空值位置转换后仍为空,符合预期。

该实现基于pandas原生行运算,无需逐单元格遍历或编写复杂映射表,处理大体积表格时性能表现更好。

内容的提问来源于stack exchange,提问作者Luis Henrique Batista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 02:51:31