Python Pandas逐行按多条件匹配值提取对应列名求助
Pandas多条件逐行提取匹配列名解决方案
你可以通过行方向apply调用自定义判断函数实现需求,完整实现代码如下:
首先导入依赖并构造示例数据:
import pandas as pd # 构造示例数据 data = {'Name': ['Tom', 'Joseph', 'Krish', 'John'], 'acne': [1, 4, 1, 2], 'wrinkles': [1, 3, 4, 4],'darkspot': [2, 2, 3, 4] } df1 = pd.DataFrame(data)
然后编写行处理函数并执行计算:
# 定义逐行判断逻辑 def get_problem_cols(row): # 排除Name列,只判断数值列 num_cols = row.index.drop('Name') # 优先匹配值为3/4的列 priority_cols = [col for col in num_cols if row[col] in (3,4)] if priority_cols: return priority_cols # 没有匹配则返回值为2的列 return [col for col in num_cols if row[col] == 2] # 行方向应用函数生成新列 df1['problem'] = df1.apply(get_problem_cols, axis=1)
执行后df1的输出结果和你预期的df2完全一致。
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

