Pandas数据框中按列值最大条件提取对应列名后缀数字的方法
基于Pandas的实现方案
针对需要从固定格式的编码列中,提取最大取值对应后缀数字的需求,可按照如下步骤实现,无需手动逐列比对:
- 自动识别所有目标列,避免硬编码列名带来的维护成本:
# 匹配所有以`encoded_feature.size_cd_`为前缀的列 target_cols = [col for col in df.columns if col.startswith("encoded_feature.size_cd_")]
- 逐行计算目标列集合内的最大值对应列名,利用pandas内置的
idxmax方法直接定位:
# axis=1表示按行方向查找最大值对应的列 max_col_per_row = df[target_cols].idxmax(axis=1)
- 从列名中提取固定格式的后缀数字:
适配单数字后缀的基础提取逻辑:
如果后续列后缀会扩展为多位数(比如# 按字符串分割规则,取列名最后一段的数字作为结果 result = max_col_per_row.str.split("_").str[-1]encoded_feature.size_cd_10这类值),推荐用固定前缀切片的方式提取,兼容性更强:# 预先定义固定列前缀 col_prefix = "encoded_feature.size_cd_" # 截取列名中前缀之后的所有内容,即可得到后缀数字 result = max_col_per_row.str[len(col_prefix):]
针对你提供的单行样例数据,上述代码执行后
result的结果值为0,完全匹配预期输出。
- 若遇到多列取值并列最大的场景,
idxmax默认返回列名顺序中排在最靠前的列对应的后缀,如果需要自定义并列场景的取值规则,可以在筛选目标列时提前调整列的排列顺序。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

