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?
提前
你可以这样使用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')
谢谢大家的大力帮助。这个做到了:df [['is_r_c']] = df [['c_o','c_d']]。applymap(lambda x:如果my_is_r_c(x)为1,否则为0).max(axis ='columns')因为我需要将其放在同一列中
@joao感谢您的反馈。很高兴能为您提供帮助。