首页 > 解决方案 > 查找数组是否在 str.split() 之后不包含值

问题描述

我有一个看起来像这样的熊猫系列

(us20160223054)\nname=delmar systems, inc. , city=broussard , state=la , country=us \n\n(us9625004)\nname=delmar systems, inc. , city=broussard , state=la , country=us , atyp=us company \n\n(wo201542218)\nname=delmar systems, inc. p.o. box 129 broussard, la 70518 , postcode=70518 , country=us \n

样本数组 = [a,a,b,a]

我想要做的是在使用 split('\n\n') 之后,我想返回包含至少出现一次但不是整个数组的特定单词的行。例如,对于这个系列,让我们说 wordToSearch = broussard,这将是 False,因为 broussard 出现在数组的所有元素中。如果您查看示例数组,并且 wordToSearch = a,这将是正确的,因为“a”至少出现一次,但它不在整个数组中。

我尝试使用 test[~test['assignee_address'].str.split('\n\n').str.contains('houston')] 但它不起作用,因为 str.split 不搜索整个数组

任何帮助将不胜感激

标签: pythonstringpandasseries

解决方案


您可以做的是在应用您的.split("\n\n"), 在数组内的每个字符串中搜索单词的存在,如果它至少发生一次,它就在该数组内:

text = [['xxx'], ['bbb'], ['aaa'], ['vasco']] #after .split()
for wordArray in text:
  contains = True in [('wordToSearch' in string) for string in wordArray] # search for word in every element, if one is true, then you found it
  if contains == True:
    # do something

推荐阅读