如何为DataFrame每行最小值添加对应列名生成新DataFrame?
解决方法
首先,你的原始DataFrame定义如下:
import pandas as pd data = [[5,4,3,2,6,8], [9,1,5,4,8,6], [7,6,8,1,2,4], [9,6,5,4,8,3]] df = pd.DataFrame(data, columns=['Col1','Col2','Col3','Col4','Col5','Col6'])
要同时获取每行的最小值及其对应列名,可以用pandas的idxmin(axis=1)方法——它能返回每行最小值所在的列名,再结合min(axis=1)的结果组合成你需要的格式。
方法一:生成你期望的Series格式
执行以下代码:
# 获取每行最小值和对应列名 min_vals = df.min(axis=1) min_cols = df.idxmin(axis=1).str.lower() # 转为小写列名,匹配你的期望输出 # 组合成以最小值为索引、列名为值的Series result = pd.Series(min_cols.values, index=min_vals.values)
运行后输出:
2 col4 1 col2 1 col4 3 col6 dtype: object
方法二:保留原行索引的DataFrame格式
如果需要更清晰的结构化展示,也可以生成包含两列的DataFrame:
result_df = pd.DataFrame({ '最小值': df.min(axis=1), '对应列名': df.idxmin(axis=1).str.lower() })
输出结果:
最小值 对应列名 0 2 col4 1 1 col2 2 1 col4 3 3 col6
内容的提问来源于stack exchange,提问作者Pranab
相关产品推荐
相关产品推荐

