如何用Pandas比较各列求和结果并返回最值列名
Pandas 高效求列求和最值对应列名的实现方法
问题说明
现有如下结构的Pandas DataFrame:
date mon tue wed thu fri sat sun 01-01-2022 2 3 5 7 8 1 0 02-01-2022 3 4 7 6 3 0 4 03-01-2022 4 8 7 9 1 2 5 04-01-2022 5 2 1 1 8 1 2 05-01-2022 6 1 9 3 7 1 1
需求为:计算除date列外每一列的求和值,找出求和值最大与最小的列名,并返回如下格式的结果:
max number is seen on wed and min number is seen on sat.
高效实现方法
直接利用Pandas内置的矢量化操作完成,步骤如下:
排除日期列,计算其余数值列的求和值
# 假设DataFrame变量名为df col_sums = df.drop('date', axis=1).sum()获取求和最大、最小对应的列名
max_col = col_sums.idxmax() min_col = col_sums.idxmin()格式化输出结果
print(f"max number is seen on {max_col} and min number is seen on {min_col}.")
效率说明
Pandas的sum()、idxmax()、idxmin()都是基于底层优化的矢量化操作,避免了Python层面的循环遍历,处理大规模数据时性能远优于手动循环计算,是最贴合Pandas设计理念的高效实现方式。
内容的提问来源于stack exchange,提问作者user18334254
相关产品推荐
相关产品推荐

