Python Pandas:提取每行最大值、对应列名及ItemName列方法
提取DataFrame每行最大值、对应列名并保留ItemName列
直接通过生成新列的方式就能轻松实现需求,不用把列名设为索引,步骤如下:
1. 示例DataFrame(模拟你的数据)
import pandas as pd data = { 'ItemName': ['苹果', '香蕉', '橙子'], '价格1': [5, 7, 6], '价格2': [6, 6, 8], '价格3': [7, 8, 7] } new_df = pd.DataFrame(data)
2. 生成最大值及对应列名列,合并ItemName
直接新增两列存储最大值和对应列名,再筛选需要的列即可:
# 计算每行最大值(只针对数值列) new_df['最大值'] = new_df.max(axis=1, numeric_only=True) # 获取最大值对应的列名 new_df['对应列名'] = new_df.idxmax(axis=1, numeric_only=True) # 提取最终需要的列 result = new_df[['ItemName', '对应列名', '最大值']] print(result)
输出结果:
ItemName 对应列名 最大值 0 苹果 价格3 7 1 香蕉 价格3 8 2 橙子 价格2 8
3. 基于你原有代码的改造方案
如果想沿用你之前的max和idxmax结果,可以直接构建新DataFrame并关联ItemName:
# 基于你原有代码的写法 max_values = new_df.max(axis=1, numeric_only=True) max_columns = new_df.idxmax(axis=1, numeric_only=True) # 组合成新DataFrame并加入ItemName result = pd.DataFrame({ 'ItemName': new_df['ItemName'], '对应列名': max_columns, '最大值': max_values })
这样就能避免把列名设为索引带来的对齐问题,结构更清晰。
内容的提问来源于stack exchange,提问作者Sindu_
相关产品推荐
相关产品推荐

