如何使用python中的现有列创建一个基于其他列的新列

2024-09-27 07:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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"]})

我想做的是在python中复制R代码

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


Tags: dataframedtwinfrenchisinlosepaste0language1
2条回答

numpy.where将在这里工作:

dt['language4'] = np.where("french" not in dt['language1'], dt['language2'] + '_win', dt['language2'] + '_lose')

我也可以分享“apply+ifelse”解决方案:

dt['language4'] = dt.apply(lambda x: x['language2'] + "_win" if not('french' in x['language1']) else x['language3']+"_lose", axis=1)

相关问题 更多 >

    热门问题