可扩展的方法来透视和识别4路数据帧中缺少的值?

2024-10-01 13:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧。每个角色都有一个,他们在饮食中必须选择的食物类别(样本:)

role_type   food_categories
Sportsman   Meat, Seafood, Fruits
Kids    Meat, Dairy, Vegetables
Elderly Fruits, Vegetables
Teenagers   Seafood, Junkfood, Meat
Athletes    Meat, Dairy, Seafood, Fruits
Trainer    Meat, Dairy
Others  Meat, Junkfood

另一个是关于需要吃什么才能将该类别分类为完整类别的信息(也是一个样本,实际数据包含大量类别):

food_name   food_category   category_type
Lettuce Vegetables  all
Celery  Vegetables  all
Shrimp  Seafood any
Salmon  Seafood any
Tuna    Seafood any
Yougourt    Dairy   all
Cheese  Dairy   all
Veal    Meat    any
Mutton  Meat    any
Orange  Fruits  all
Pear    Fruits  all
Apple   Fruits  all
Cheese_Burger   Junkfood    any
Fries   Junkfood    any
Pizza   Junkfood    any

因此,例如,如果一个人要担任trainer角色,他们必须完成DairyMeat类别。因此,他必须按照以下标准进食:他必须进食Meat类别的任何食物,即'Veal''Mutton'或两者兼而有之。然后他必须吃Dairy类的所有食物,即'Milk''Youghurt''Cheese'。完成后,可以将其传递给角色。对于一个非常特定的角色和类别,我可以进行如下主要检查,例如我刚才解释的场景:

passed = any([choice in choices_uptil_now  for choice in ['Veal', 'Mutton']]) and all([choice in choices_uptil_now for choice in ['Milk', 'Youghurt', 'Cheese']])

基于此检查,我可以通过迭代查找值,并查看所需的内容,但如何以更具可伸缩性的方式进行处理?就像有很多种类,很多食物和很多角色,人们都在为之奋斗。我尝试将值作为python函数any()all()进行数据透视和存储,以应用于pandas数据帧,但感觉这不是最具伸缩性的方法。任何改善这种情况的帮助都会非常有帮助


Tags: 数据in角色anyall类别食物choice