Pandas:应用多个过滤器

2024-05-19 03:20:40 发布

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

我有一个数据帧如下

      WORD1    CAT1          WORD2    CAT2     Val 1  Val 2  Val 3
    elephant   animal          daisy   flower    191    138    129
        lion   animal      blackbird   flower    171    169    213
       tiger   animal          chimp   animal    229    179    482
      hoopoe    bird         cheetah   animal    169    104    202
    hornbill    bird          cuckoo     bird    483    469     78
   sunflower   flower          robin     bird    470    442    160
        rose   flower        leopard   animal    219    244    432
     giraffe   animal         violet   flower    445    497    420
       zebra   animal           deer   animal    280     74    383
     sparrow    bird   chrysanthemum   flower    280    242    434
        duck   animal           hawk     bird    321     90     87

我想根据“CAT1”和“CAT2”中的以下模式应用过滤器

['animal'、['flower'、'bird']]——读作

 CAT1     CAT2
 animal & flower
 animal & bird
 flower & animal
 bird   & animal

应用过滤器时应排除“花鸟”或“花鸟”。你知道吗

上述关系的过滤结果应为:

WORD1       CAT1      WORD2     CAT2     Val 1   Val 2   Val 3
elephant    animal    daisy     flower    191     138      129
duck        animal    hawk      bird      321      90       87
rose        flower    leopard   animal    219     244      432
hoopoe      bird      cheetah   animal    169     104      202
lion        animal    blackbird flower    171     169      213
giraffe     animal    violet    flower    445     497      420

我如何构建一个过滤器来实现这一点?你知道吗

我尝试了下列方法,但没有成功。你知道吗

>>> data = data[((data['CAT1'] != 'flower') & (data['CAT2'] != 'bird')) & ((data
['CAT1'] != 'bird') & (data['CAT2'] != 'flower'))]

Tags: 过滤器datavalflowercat1blackbirdelephantanimal
1条回答
网友
1楼 · 发布于 2024-05-19 03:20:40

这有用吗?它不是特别优雅,但它应该做的工作。我在你的列表中发现了liongiraffe,但它们似乎符合标准,除非我误解了。你知道吗

myset = ['flower', 'bird']
df[((df.CAT1 == 'animal') & (df.CAT2.isin(myset))) | ((df.CAT2 == 'animal') & (df.CAT1.isin(myset)))]

给予

     WORD1    CAT1    WORD2     CAT2    Val1    Val2    Val3
0    elephant animal  daisy     flower   191     138     129
1    lion     animal  blackbird flower   171     169     213
3    hoopoe   bird    cheetah   animal   169     104     202
6    rose     flower  leopard   animal   219     244     432
7    giraffe  animal  violet    flower   445     497     420
10   duck     animal  hawk      bird     321     90  87

相关问题 更多 >

    热门问题