如何在Python中按行排序获取每行值最大的2个列名?
解决方案
你可以通过以下步骤实现提取每行数值最大的2个列标识并生成OUTPUT列:
完整代码
import pandas as pd # 构造示例DataFrame data = { 'A_ZZ_CR': [0.51, 0.65, 0.63, 0.59, 0.66], 'B_YY_CR': [0.12, 0.53, 0.45, 0.41, 0.43], 'C_WW_CR': [0.69, 0.18, 0.20, 0.17, 0.23], 'D_XX_CR': [0.72, 0.68, 0.73, 0.72, 0.74], 'E_VV_CR': [0.04, 0.70, 0.72, 0.69, 0.71], 'F_OO_CR': [0.78, 0.08, -0.02, 0.10, 0.16] } df = pd.DataFrame(data) # 新增OUTPUT列 df['OUTPUT'] = df.apply( lambda row: ', '.join([col.split('_')[1] for col in row.nlargest(2).index]), axis=1 ) print(df)
代码说明
- 获取前2大值的列名:使用
row.nlargest(2).index获取每行数值最大的前2个列名 - 提取中间标识:通过
col.split('_')[1]将列名按下划线分割,取中间的标识部分(例如F_OO_CR分割后取OO) - 拼接结果:用
', '.join()将两个标识拼接成逗号分隔的字符串
运行后即可得到你需要的带OUTPUT列的DataFrame。
内容的提问来源于stack exchange,提问作者Divyansh Kumar Singh
相关产品推荐
相关产品推荐

