我正在迭代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]
尝试将re.search(r'( keyword )', lineItem[19], re.I):
更改为re.match('(.*)keyword(.*)', lineItem[19]):
。 re.search
将返回相应的匹配对象,而re.match
将返回if语句中所需的逻辑值。 sufix和前缀(.*)
将忽略字符串左侧或右侧的任何其他字符。希望能帮助到你。
这是一个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