如果我要在多个条件下应用lambda,该怎么办?
df.train.age.apply(lambda x:0 (if x>=0 and x<500))
还是有更好的方法?
答案 0 :(得分:0)
您的语法需要另外一个:
t_FUNC=r'sin|cos|tan'
def p_func(p):
'''
term : FUNC LPAREN expr RPAREN
'''
print('p:', p[0], p[1], p[2], p[3], p[4])
func = {'sin': sin, 'cos': cos, 'tan': tan}
if p[1] in func:
p[0] = func[p[1]](p[3])
这是一个很好的方法
答案 1 :(得分:0)
无需使用apply
,但可以使用np.where
,如下所示。
import numpy as np
import pandas as pd
df = pd.DataFrame({
'age' : [-10,10,20,30,40,100,110]
})
df['age'] = np.where((df['age'] >= 100) | (df['age'] < 0), 0, df['age'])
df
如果您对使用上述代码有任何疑问,请发布示例数据框。我将更新我的答案。
答案 2 :(得分:0)
创建一个蒙版并使用蒙版从数组中选择...仅适用于结果
mask = (df.train.age >=0) & (df.train.age < 500)
df.train.age[mask].apply(something)
如果您只需要将不匹配的内容设置为零,那就更容易了
df.train.age[~mask] = 0