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

在Pandas DataFrame中按列计算极值差并查找最小差值对应列

解决DataFrame列差值计算并找出最小差值列的问题

嘿,我来帮你搞定这个Pandas的列差值计算问题!先把你的需求拆解清楚,然后一步步实现。

1. 先还原你的原始DataFrame

首先我们把你提供的原始数据转换成Pandas DataFrame,方便后续处理:

import pandas as pd

# 构造原始数据
data = {
    '40': [2.68, 4.07, 4.94, 4.82, 2.76],
    '50': [2.41, 3.74, 4.57, 4.59, 2.68],
    '60': [2.02, 3.41, 4.02, 3.98, 2.37],
    'Day': ['Friday', 'Monday', 'Thursday', 'Tuesday', 'Wednesday']
}
# 将Day列设为索引,和你的数据结构匹配
df = pd.DataFrame(data).set_index('Day')

执行后得到的DataFrame如下:

40    50    60
Day                      
Friday    2.68  2.41  2.02
Monday    4.07  3.74  3.41
Thursday  4.94  4.57  4.02
Tuesday   4.82  4.59  3.98
Wednesday 2.76  2.68  2.37

2. 计算目标列的差值(最大值-最小值)

接下来针对40、50、60这些列,计算每列的最大值减去最小值的差值:

# 选择目标列,用apply计算每列的max-min差值
column_ranges = df[['40', '50', '60']].apply(lambda col: col.max() - col.min())

得到的差值结果是:

40    2.26
50    2.18
60    2.00
dtype: float64

和你示例里的[{40:[2.26]},{50:[2.18]},{60:[2]}]完全一致。

3. 找出差值最小的列名

最后一步,直接用idxmin()方法获取差值最小的列名:

# 获取差值最小的列名
min_range_col = column_ranges.idxmin()
# 输出结果
print(f"FinalOutput = {min_range_col}")

运行后会输出:

FinalOutput = 60

完美匹配你的示例结果!

如果后续你的列扩展到90,只需要把df[['40', '50', '60']]改成df.loc[:, '40':'90'](假设列名是连续的字符串格式),就能自动处理所有40到90的列啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:58:08