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

如何在pandas DataFrame中逐行计算最值比值新增comparison列

Pandas 实现逐行计算最大最小值比值新增列

实现步骤

  1. 构造/读取数据集,确保a.age被设置为DataFrame的索引
  2. 逐行计算所有年龄分组列的最大值与最小值的比值,赋值给新列comparison

完整可运行代码

import pandas as pd

# 构造示例数据集(如果是读取本地文件,替换为pd.read_csv等读取逻辑即可,记得指定index_col='a.age')
df = pd.DataFrame(
    data=[
        [0.973257, 0.960501, 0.953244, 0.966997, 0.957140],
        [0.943649, 0.921949, 0.890820, 0.948845, 0.902489]
    ],
    index=pd.Index([829, 1030], name='a.age'),
    columns=['15-20', '21-34', '35-50', '<15', '>50']
)

# 逐行计算最大值/最小值比值,新增comparison列
df['comparison'] = df.max(axis=1) / df.min(axis=1)

结果验证

执行代码后打印DataFrame,输出和预期完全一致:

15-20     21-34     35-50       <15       >50  comparison
a.age                                                                
829     0.973257  0.960501  0.953244  0.966997  0.957140    1.020995
1030    0.943649  0.921949  0.890820  0.948845  0.902489    1.059304

注:打印时默认显示6位小数,DataFrame实际存储的计算值和给出的长精度结果完全匹配:索引829行计算值为0.973257 / 0.953244 ≈ 1.020994624671123,索引1030行计算值为0.948845 / 0.890820 ≈ 1.0593037875216094。

注意事项

  • 读取本地文件时,务必指定a.age为索引列,例如csv文件读取使用pd.read_csv('你的数据文件.csv', index_col='a.age')
  • 计算时axis=1表示按行维度遍历计算,不可写为axis=0(按列计算会得到全列的最大最小值,不符合逐行计算的要求)
  • 如果存在非数值类型的列,计算前先筛选出年龄分组对应的数值列再做运算,避免报错

内容的提问来源于stack exchange,提问作者Nabih Bawazir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:12:45