熊猫正则表达式新列 nan - 但正则表达式测试器显示正则表达式有效

我有一个来自测试回归失败的 csv 错误消息,我正在将它导入到 Pandas 数据帧中,但我想找到一些与异常有关的子字符串,特别是。


我用 .csv 的内容填充我的数据框,如下所示:


df = pd.read_csv('ErrorMessage3.csv', header=None, sep=',', 

             names=['ErrorMessage'])

我有以下正则表达式和相应的测试字符串(这是我的错误消息数据框列中的第一个条目),它完全返回我想要的内容:


teststring = "Step 13 - Iteration 1 Failed: Action: <Update Latest CC Exp 

Date Record from Epay Account {DBServer;UserName;Password='', 

DatabaseName='',Year Offset='-10'}> ---> 

System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or 

property cannotbecalled 

on Null values. ---> System.Data.SqlTypes.SqlNullValueException2: Data is Null."


re.findall(r"---> ([^:]+): ", teststring)

这导致以下输出:


['System.Data.SqlTypes.SqlNullValueException',

 'System.Data.SqlTypes.SqlNullValueException2']

但我希望能够将其添加为数据框中的“例外”列。我认为这会奏效:


df['Exceptions'] = df['ErrorMessage'].str.extract(r"---> ([^:]+): ")

但是当我运行它时,我添加了“异常”列,但所有行都添加了 NaN。我验证了我的 ErrorMessage 是对象类型,并且我使用了在线正则表达式测试器来验证至少我的 ErrorMessage 条目的子集确实包含与我的正则表达式匹配的异常。我已经阅读了一些看起来非常相似的其他堆栈溢出问题,但我运气不佳。


为什么将正则表达式应用于数据帧会产生 nan,但将其应用于单个字符串会返回我想要的结果?


MM们
浏览 155回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python