如何检查“ Array”类型的python pandas数据框列中的AND和OR条件?

问题描述

我创建了一个函数来检查熊猫数据框的数组列中的每个值,然后相应地将值分配给新列。根据食物摄入量基本预测饮食是否健康。

我编写的功能

创建一个名为“ diet_status”的新列,并根据数组类型为“ food_intake”的列中的值分配该值。

 def diet(a):
    if 'fruits' in a:
        y = 'healthy'
    elif 'vegetables' in a:
        y = 'healthy'
    elif 'chips' in a:
        y = 'unhealthy'
    elif 'sweets' in a:
        y = 'unhealthy'
    else
        y = 'NA'
    return y 



df["diet_status"] = df["food_intake"].apply(diet)

如何在此处检查多个条件?例如,如果“ food_intake”数组包含“(水果和蔬菜)AND(薯片或糖果)”,我想将其命名为“ balanced”。需要基本检查数组中值的AND / OR条件。谁能帮我这个忙。

解决方法

因为在这里使用标量,必须使用orand,而不是|&

 def diet(a):

    m1 = ('fruits' in a) or ('vegetables' in a)
    m2 = ('chips' in a) or ('sweets' in a)
    if m1:
        y = 'healthy'

    elif m2: 
        y = 'unhealthy'

    elif m1 and m2:
        y = 'balanced'
        
    else
        y = 'NA'
    return y