Получение текстовых данных из строк таблицы

Рейтинг: 0Ответов: 2Опубликовано: 05.05.2023

Выгружаю из Appmetrica данные по поисковой выдаче. Использую для этого библиотеки requests, json, urllib Коротко сам запрос:

url = '{host}/logs/v1/export/events.json?'.format(host=API_HOST)+ url_params
r = requests.get(url, headers=header_dict)

Более подробно можно прочитать в справке appmetrica

На выходе получаю данные наподобие этих:

{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"па"}
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пан"}
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананг"}
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананги"}
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"панангин"}

Прошу подсказать, каким образом я могу оставить только для дальнейшей обработки:

па
пан
пананг
пананги
панангин

Это пример с конкретным товаром. Регионы могут быть другие, количество символов до названия товаров также меняется.

пример самого датафрейма: введите сюда описание изображения

Ответы

▲ 2Принят
import pandas as pd
import json

df = pd.DataFrame({'event_json':['{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"па"}',
'{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пан"}',
'{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананг"}',
'{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананги"}',
'{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"панангин"}']})

res = df.apply(lambda x: pd.Series(json.loads(x["event_json"])), axis=1)

print(res["Поисковой запрос"])
0          па
1         пан
2      пананг
3     пананги
4    панангин
Name: Поисковой запрос, dtype: object​

соответственно,

res["Поисковой запрос"].to_list()

даст вам простой список вместо серии:

['па', 'пан', 'пананг', 'пананги', 'панангин']
▲ 0
data=[
             {"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"па"},
             {"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пан"},
             {"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананг"},
             {"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананги"},
             {"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"панангин"}
      ]

for el in data:
    print (el['Поисковой запрос'])

Вывод:

па
пан
пананг
пананги
панангин

Пример самого датафрейма: введите сюда описание изображения