在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
相关产品推荐
相关产品推荐

