如何查找pandas DataFrame中各列最小值对应的行索引
实现方案
pandas 中min()、idxmin()这类轴向聚合方法默认参数为axis=0,会沿纵向逐列计算,返回每列的聚合结果;如果需要沿横向逐行计算,传入参数axis=1即可。
获取每列最小值对应的行索引
直接调用idxmin()方法即可,默认计算逻辑刚好匹配需求:
# 返回值为Series结构:索引是原data的列名,值是对应列最小值所在的行标签索引 col_min_row_index = data.idxmin() # 如需同时拿到每列最小值和对应索引,可拼接为结构化表格 col_min_result = pd.DataFrame({ "min_value": data.min(), "min_row_index": data.idxmin() })
如果需要获取最小值对应的整数位置索引(而非自定义的行标签),可以通过numpy数组接口实现:
# 返回数组顺序和原data列顺序一一对应,值为各列最小值的整数行位置 col_min_row_pos = data.to_numpy().argmin(axis=0)
补充:每行最小值的正确实现
针对你最初要获取每行最小值的需求,指定axis=1即可:
# 逐行计算最小值 row_min_value = data.min(axis=1) # 逐行计算最小值对应的列标签索引 row_min_col_index = data.idxmin(axis=1) # 拼接为结构化结果 row_min_result = pd.DataFrame({ "min_value": row_min_value, "min_col_index": row_min_col_index })
提示:如果你的数据集存在空值,上述方法会自动跳过空值计算;如果整列/整行全为空值,对应返回结果会是NaN。
内容的提问来源于stack exchange,提问作者Samar Pratap Singh
相关产品推荐
相关产品推荐

