【发布时间】:2021-01-11 08:33:14
【问题描述】:
我正在寻找一种更短、更优雅的方式来编写以下条件,假设我有 30 种不同的组合。是否可以映射具有多个条件或其他内容的某种字典?
def set_name(df):
if df['PRODUCT'] == 'A' and df['TYPE'] == 'C2':
return 'AAC2'
elif df['PRODUCT'] == 'A' and df['TYPE'] == 'C3':
return 'AAC3'
elif df['PRODUCT'] == 'B' and df['TYPE'] == 'C2':
return 'BBC"'
df['RETURN'] = df.apply(set_name, axis=1)
如果我有很多组合,下面的另一种方法仍然很长。
conditions = [
(df['PRODUCT'] == 'A') & (df['TYPE'] == 'C2'),
(df['PRODUCT'] == 'A') & (df['TYPE'] == 'C3')
]
values = ['AAC2', 'AAC3']
df['RETURN'] = np.select(conditions, values)
【问题讨论】:
标签: python pandas dictionary multiple-columns