使用Pandas的df.min()后,如何获取每行最小值对应的列名?
获取DataFrame每行最小值对应的列名并新增列
问题描述
需要找出DataFrame每行最小值对应的列名,并将其存入新列中。使用min(axis=1)仅能得到每行最小值的数值,无法获取对应列名,且需要向量化解决方案处理大量数据。
示例数据与问题复现:
import pandas as pd initialDict = {"A":[6.53,11.47,92.08],"B":[9.11,8.15,12.49]} initialDf = pd.DataFrame.from_dict(initialDict,orient="index",columns=["Value 1","Value 2","Value 3"])
生成的DataFrame:
Value 1 Value 2 Value 3 A 6.53 11.47 92.08 B 9.11 8.15 12.49
使用min(axis=1)仅返回数值,无法获知对应列名:
initialDf.min(axis=1,numeric_only=True)
结果:
A 6.53 B 8.15 dtype: float64
解决方案
Pandas内置的idxmin(axis=1)方法可直接返回每行最小值对应的列名,该方法为向量化实现,效率极高,适合处理大规模数据集。
代码实现
# 添加新列,存储每行最小值对应的列名 initialDf['min_column'] = initialDf.idxmin(axis=1, numeric_only=True) # 查看最终结果 print(initialDf)
输出结果
Value 1 Value 2 Value 3 min_column A 6.53 11.47 92.08 Value 1 B 9.11 8.15 12.49 Value 2
补充说明
numeric_only=True参数确保仅计算数值型列的最小值,避免非数值列干扰计算结果。- 若某行存在多个相同的最小值,
idxmin会返回第一个出现该最小值的列名。
内容的提问来源于stack exchange,提问作者Corsaka
相关产品推荐
相关产品推荐

