如何为Pandas DataFrame新增列存储满足≥median条件的排序列名列表
实现代码
首先导入依赖并构造示例数据:
import pandas as pd # 构造示例DataFrame data = [ [0.10,0.08,0.29,0.13,0.03,0.29,0.06,0.03,0.06,0.08], [0.82,0.18,0.14,0.12,0.08,0.12,0.08,0.06,0.10,0.12], [0.57,0.17,0.13,0.14,0.05,0.16,0.05,0.04,0.09,0.13] ] cols = ['a','b','c','d','e','f','g','h','i','median'] df = pd.DataFrame(data, columns=cols)
然后实现possible_labels列的生成逻辑:
# 指定参与条件判断的列范围 calc_cols = ['a','b','c','d','e','f','g','h','i'] # 按行处理生成目标列 df['possible_labels'] = df.apply( lambda row: [ col for col, val in sorted(row[calc_cols].items(), key=lambda x: x[1], reverse=True) if val >= row['median'] ], axis=1 )
逻辑说明
- 用
apply按行遍历DataFrame,每行先取出calc_cols范围内的列名和对应值,按数值从大到小排序 - 筛选出数值大于等于当前行
median的列名,按排序顺序组成列表存入新列 - 输出结果完全符合预期效果
内容的提问来源于stack exchange,提问作者Govind Banura
相关产品推荐
相关产品推荐

