#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 удалит пробелы из строки.