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

如何基于外部数值对DataFrame中员工数按接近度排名?

问题描述

我有一个包含公司名称和员工数量的DataFrame,结构如下:

公司名称员工数量
Company A1478
Company B12
Company C490
Company D34012

需要根据用户输入的一个数值(比如10),按照各公司员工数与该数值的差值绝对值大小分配排名:差值越小排名越靠前;若两家公司员工数相同,需分配相同排名。

以输入值10为例,预期结果如下:

公司名称员工数量排名
Company A14783
Company B121
Company C4902
Company D340124

我了解df.rank()函数,但不清楚如何基于和目标数值的差值实现该排名功能。

解决方案

你可以通过以下两步实现需求:

  1. 计算员工数与目标值的差值绝对值,量化"接近程度"
  2. 基于该差值绝对值,用df.rank()完成排名,配置参数处理并列情况

示例代码

假设目标输入值为target = 10,具体实现代码如下:

import pandas as pd

# 构建原始DataFrame
data = {
    "公司名称": ["Company A", "Company B", "Company C", "Company D"],
    "员工数量": [1478, 12, 490, 34012]
}
df = pd.DataFrame(data)

target = 10

# 计算员工数与目标值的差值绝对值
df["差值绝对值"] = abs(df["员工数量"] - target)

# 基于差值绝对值排名:ascending=True表示差值越小排名越靠前;method='min'确保相同差值的行获得相同排名
df["排名"] = df["差值绝对值"].rank(method='min', ascending=True)

# 可选:删除临时的差值列
df = df.drop("差值绝对值", axis=1)

print(df)

参数说明

  • ascending=True:差值越小越接近目标值,因此用升序排名,让小差值对应小排名数
  • method='min':当多个行的差值绝对值相同时,会为它们分配相同的最小排名(比如两个公司差值均为5,都会排第1),满足"相同员工数分配相同排名"的要求

运行代码后即可得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:43:37