gpt4 book ai didi

python - pandas:应用多个过滤器

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:19 25 4
gpt4 key购买 nike

我有一个数据框如下;

      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'))]

最佳答案

这个有用吗?它不是特别优雅,但它应该可以完成工作。除了您的列表之外,我还捕获了狮子长颈鹿,但它们似乎符合标准,除非我误解了。

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

关于python - pandas:应用多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21698668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com