Python: извлечение подстроки из строки с помощью фрейма данных

#python #string #pandas #dataframe

#python #строка #pandas #фрейм данных

Вопрос:

Пытаюсь извлечь подстроку из строки. Работает для одной записи, но получает NAN для нескольких записей.

Ожидаемый результат:

 1st Row:HKA-33711-15293045
2nd row:HKA-94612-14661285
  

Код попробован:

 df1['o_position'] = df1['Event Value'].str.find('HKA-')
df1['o_position_to_18'] = df1['o_position'] 18
df1["order_id"]=df1["Event Value"].str.slice(start=df1["o_position"],stop=df1['o_position_to_18'])
df1.head()
  

Данные:

 {'"af_currency"':'"INR"','"af_revenue"':429,'"af_customer_user_id"':'"33738413"','"af_price"':['"399"'],'"af_receipt_id"':'"HKA-33711-15293045"','"af_content_id"':['"72769"'],'"sessionId"':'"-1551484318545"','"af_quantity"':['"1"'],'"af_param_1"':'"HKA-33711-15293045"','"af_content_type"':'"order"'}
  

2-я строка:

 {'"af_price"':['"2199"'],'"af_content_id"':['"72289"'],'"af_quantity"':['"1"'],'"af_param_1"':'"HKA-94612-14661285"','"af_content_type"':'"order"','"af_currency"':'"INR"','"af_revenue"':2199,'"af_receipt_id"':'"HKA-94612-14661285"'}
  

Комментарии:

1. Данные не соответствуют именам столбцов. Можете ли вы показать пример фрейма данных и ожидаемый результат?

2. @amanb: удалив имя столбца, я использую приведенную ниже строку в одном столбце и должен извлечь HKA-33711-15293045 из строки

3. Попробуйте df1[df1['Event Value'].str.contains('HKA-')] получить фрейм данных из всех строк, в Event Value столбце которых есть строка. Еще одна вещь: избавьтесь от » » в значениях фрейма данных.

4. Спасибо @amanb: Хочу извлечь только HKA-33711-15293045

5. Использование df1[df1['Event Value'].str.strip().str.match('HKA-33711-15293045')] . Strip удалит пробелы из строки.