如何在Python/Pandas中将三列最大值(含列标识)存入新列
在Pandas中生成每行最大值与列名组合的新列
问题描述
现有如下DataFrame:
| a | b | c |
|---|---|---|
| 1 | 1 | 3 |
| 2 | 4 | 1 |
| 3 | 2 | 1 |
需要为其新增一列max,该列的值为每行a、b、c三列中的最大值与对应列名的组合,最终结果如下:
| a | b | c | max |
|---|---|---|---|
| 1 | 1 | 3 | 3c |
| 2 | 4 | 1 | 4b |
| 3 | 2 | 1 | 3a |
解决方案
可以通过Pandas内置的max()和idxmax()方法快速实现需求:
1. 构造示例数据
import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3], 'b': [1, 4, 2], 'c': [3, 1, 1] })
2. 生成max列
通过以下代码直接完成最大值与列名的拼接:
df['max'] = df[['a', 'b', 'c']].max(axis=1).astype(str) + df[['a', 'b', 'c']].idxmax(axis=1)
3. 验证结果
执行代码后,打印df即可得到目标结果:
print(df)
输出内容:
a b c max 0 1 1 3 3c 1 2 4 1 4b 2 3 2 1 3a
关键方法说明
max(axis=1):按行计算指定列的最大值idxmax(axis=1):返回每行最大值对应的列名astype(str):将数值类型的最大值转为字符串,确保能与列名字符串拼接
内容的提问来源于stack exchange,提问作者van dam
相关产品推荐
相关产品推荐

