Получение текстовых данных из строк таблицы
Выгружаю из 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 шт):
Автор решения: Oopss
→ Ссылка
data=[
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"па"},
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пан"},
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананг"},
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"пананги"},
{"Регион":"Башкортостан Респ","Город":"Агидель г","Аптека":"Аптека не выбрана","Поисковой запрос":"панангин"}
]
for el in data:
print (el['Поисковой запрос'])
Вывод:
па
пан
пананг
пананги
панангин
Автор решения: strawdog
→ Ссылка
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()
даст вам простой список вместо серии:
['па', 'пан', 'пананг', 'пананги', 'панангин']

