Warm tip: This article is reproduced from serverfault.com, please click

python-在一行中的2个数据框列上应用Lambda

(python - Apply Lambda on 2 dataframe columns in one line)

发布于 2020-11-28 17:10:09
r_c = 'newyork sanfrancisco losangeles'.split()

def my_is_r_c(c):
    return c.replace(' ', '').lower() in r_c

train['is_r_c'] = train['c_o'].apply(lambda x: 1 if my_is_r_c(x) else 0)
train['is_r_c'] = train['c_d'].apply(lambda x: 1 if my_is_r_c(x) else 0)

嗨,大家好

有没有一种方法可以仅在一行中对两列['c_o']和['c_d']应用lambda?

提前

Questioner
laminado
Viewed
0
jottbe 2020-11-29 01:53:33

你可以这样使用applymap

df[['is_r_c', 'is_r_d']]= df[['c_o', 'c_d']].applymap(lambda x: 1 if my_is_r_c(x) else 0)

如果你希望合并这些列,并且实际上只有一个结果列,并且如果你的函数对至少其中一个列的求值为1,则结果列应该包含1,你可以使用以下较小的变体来做到这一点:

df[['is_r_c']]= df[['c_o', 'c_d']].applymap(lambda x: 1 if my_is_r_c(x) else 0).max(axis='columns')