У меня есть 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, а применение его к отдельной строке возвращает то, что я хочу?