我在 python 中有dataframe
,看起来像这样
dt = pd.DataFrame({"language1": ["english", "english123", "ingles", "ingles123", "14.0", "13", "french"],
"language2": ["englesh", "english123", "ingles", "ingles123", "14", "13", "french"],
"language3": ["englesh", "engl", "ingles", "ingles123", "14", "13", "spanish"]})
我想做的是复制 R 代码,但在 python
dt[,language4:=ifelse(!language1%in%c("french"),paste0(language2,"_win"),paste0(language3,"_lose"))]
我尝试了这个,但它不起作用
dt['language4'] = dt.apply(lambda x: ~x['language1'].isin(['french']), x['language2'] + "_win", x['language3']+"_lose")
所以我想出了这个
dt.loc[~dt['language1'].isin(["french"]),'language4'] = surv_dt_sd['language2'] + \
"_win"
但我不知道如何在一行中实现else
位
答案 0 :(得分:2)
numpy.where
可以在这里工作:
dt['language4'] = np.where("french" not in dt['language1'], dt['language2'] + '_win', dt['language2'] + '_lose')
答案 1 :(得分:0)
我也可以分享“apply + ifelse”解决方案:
dt['language4'] = dt.apply(lambda x: x['language2'] + "_win" if not('french' in x['language1']) else x['language3']+"_lose", axis=1)