【发布时间】:2019-12-21 21:04:47
【问题描述】:
我有以下值的数据框
Bird Color
0 Parrot ['Light_Blue','Green','Dark_Blue']
1 Eagle ['Sky_Blue','Black','White', 'Yellow','Gray']
2 Seagull ['White','Jet_Blue','Pink', 'Tan','Brown', 'Purple']
我想创建一个名为“No Blue”的列,它只会列出其中不包含“Blue”一词的数组元素。
像这样:
Bird Color No Blue
0 Parrot ['Light_Blue','Green','Dark_Blue'] ['Green']
1 Eagle ['Sky_Blue','Black','White', 'Yellow','Gray'] ['Black', 'White', 'Yellow', 'Gray']
2 Seagull ['White','Jet_Blue','Pink', 'Tan','Brown', 'Purple'] ['White', 'Pink', 'Tan', 'Brown', 'Purple']
这是我最接近解决方案的事情
>>> Eagle = ['Sky_Blue','Black','White', 'Yellow','Gray']
>>> matching = [x for x in Eagle if "Blue" not in x]
>>> matching
['Black', 'White', 'Yellow', 'Gray']
【问题讨论】:
-
我想知道如何使用
str.extract或str.replace等来实现 -
由于您在每一行中迭代一个列表,我认为传递 .apply(lambda...) 更有效