大熊猫适用于多种条件的功能?

时间:2019-12-15 04:42:44

标签: python dataframe lambda

如果我要在多个条件下应用lambda,该怎么办?

df.train.age.apply(lambda x:0 (if x>=0 and x<500))

还是有更好的方法?

3 个答案:

答案 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