在“单元格”中搜索关键字时的Pandas键错误

问题描述 投票:1回答:2

我正在迭代pandas数据帧中的一些数据,搜索特定的关键字,但是生成的正则表达式搜索会导致KeyError:19。

我试图提取特定单元格中的数据,将其放在一个字符串对象中并搜索它,但每当我尝试指向任何内容来查看该列中的数据时,我得到一个KeyError:19。

为了开始我的代码示例,我已经删除了数据帧的特定块并将它们放在列表列表中。 (在这些块中,我保留了原始数据帧中的所有列)

以下是我尝试的迭代示例:

for eachGroup in mainList:
   for lineItem in eachGroup:
      if re.search(r'( keyword )', lineItem[19], re.I):
         dostuff

您可能已经猜到,我在搜索关键字的数据是第19列,其数据格式如下:

 3/23/2019 11:32:0 3/23/2019 11:32:0 3/23/2019 14:3:0 CSG CHG H6   27   1464D  Random Random Random  81

在不同列中搜索关键字的每次其他尝试都可以正常执行,没有任何错误。为什么这个案例会单独返回KeyError?

为了进一步增加清晰度,即使以下代码也会产生相同的KeyError:

for eachGroup in mainList:
   for lineItem in eachGroup:
      text = lineItem[19]
python pandas keyerror
2个回答
0
投票

尝试将re.search(r'( keyword )', lineItem[19], re.I):更改为re.match('(.*)keyword(.*)', lineItem[19]):re.search将返回相应的匹配对象,而re.match将返回if语句中所需的逻辑值。 sufix和前缀(.*)将忽略字符串左侧或右侧的任何其他字符。希望能帮助到你。


0
投票

这是一个WTF时刻......

而不是使用python的智能for循环,我决定更精细,并使用while循环循环。不用说它有效。

下面的代码实现解决了问题,但为什么它我没有线索:

bigCount = len(mainList)
count = 0
while count < bigCount:
   while smallCount < len(mainList[count]):
      if re.search(r'( keyword )', mainList[count][smallCount][19], re.I):
         dostuff
© www.soinside.com 2019 - 2024. All rights reserved.