You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Pandas DataFrame中添加记录每行最大值对应列名的列

获取每行最大值对应的列名(支持多列)

没问题,你需要的是把每行中等于最大值的所有列名收集起来,而不是存储最大值本身,我来给你几个可行的实现方法:

方法一:逻辑直观的apply写法

先算出每行的最大值,再逐行筛选出对应列名并拼接:

# 提前计算每行的最大值
row_max_values = df_1.max(axis=1)

# 逐行处理:找出值等于该行最大值的列名,用逗号连接成字符串
df_1['Highest_Rew_patch'] = df_1.apply(
    lambda row: ','.join(row[row == row_max_values[row.name]].index),
    axis=1
)

方法二:更简洁的向量化实现

eq方法生成布尔掩码,直接筛选符合条件的列名:

# 生成布尔DataFrame:标记每行中等于最大值的元素
max_mask = df_1.eq(df_1.max(axis=1), axis=0)

# 对每行提取True对应的列名并拼接
df_1['Highest_Rew_patch'] = max_mask.apply(
    lambda x: ','.join(df_1.columns[x]),
    axis=1
)

效果验证

拿你给出的第一行数据举例:

Patch_0 0.0, Patch_1 70.0, Patch_2 70.0, ... Patch_7 0.0

处理后Highest_Rew_patch列会得到Patch_1,Patch_2,完全符合你的需求;如果某行只有一个最大值列,就会单独输出该列名。

内容的提问来源于stack exchange,提问作者Kshtj

火山引擎 最新活动