如何将多条件if-elif规则转为字典,用map生成pandas新列
解决方案
步骤1:构造多条件匹配规则字典
因为需要同时匹配两列的取值组合,直接用元组作为字典的key存储两个列的匹配值,value存储对应要生成的新列值即可:
rule_dict = { ("string1", "string3"): "newstring", ("stringX", "stringY"): "newstringZ" }
步骤2:调用map生成新列
先把col1和col2的每行值打包成元组,再调用map匹配规则字典:
# 先导入依赖库(如果没导入的话) import pandas as pd import numpy as np # 示例DataFrame df = pd.DataFrame( { 'col1': ['string1', 'string1', 'string3', 'stringX', '','stringX'], 'col2': ["stringY","string3","stringY",np.nan,"stringY","stringY"] } ) # 生成新列 df['newcol'] = df[['col1', 'col2']].apply(tuple, axis=1).map(rule_dict)
结果说明
运行后未匹配到规则的行自动返回NaN,最终生成的newcol取值和预期完全一致。
内容的提问来源于stack exchange,提问作者Fazli
相关产品推荐
相关产品推荐

