Преобразование строк датафрейма

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

Из Яндекс.Метрика получаю DF (здесь сокращенная часть таблицы):

Дата Номер заказа Источник
2023-06-02 ['6857886514054418'] cityads
2023-06-03 ['6858636614093599','6858634464093342'] cityads
2023-06-03 ['6858887364118002'] 2gis
2023-06-04 ['6858025994065429'] yandex
2023-06-05 ['6858706704101675','6858722124103264','6858887364118056'] yandex

Пытаюсь в поле "Номер заказа" убрать скобки с апострофами и запятыми и перенести значения, указанные через запятую, на новую строку с сохранением соответствующих дат и источников. Чтобы стало так:

Дата Номер заказа Источник
2023-06-02 6857886514054418 cityads
2023-06-03 6858636614093599 cityads
2023-06-03 6858634464093342 cityads
2023-06-03 6858887364118002 2gis
2023-06-04 6858025994065429 yandex
2023-06-05 6858706704101675 yandex
2023-06-05 6858722124103264 yandex
2023-06-05 6858887364118056 yandex

Единственное, что получается, так это удалить скобки, используя код:

data['Номер заказа']=data['Номер заказа'].str.strip('[]')

Однако в ячейках остаются также по несколько значений, выделенных апострофами и разделенных запятыми.

Как начинающий специалист по Python прошу Сообщество помочь мне реализовать задуманную задачу.

Ответы

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

df = pd.read_clipboard()
df.iloc[:, 1] = df.iloc[:, 1].str.replace("\[|\]|'", '', regex=True)
df.iloc[:, 1] = df.iloc[:, 1].str.split(',').tolist()
df = df.explode('Номер заказа')
print(df)
Вывод:
         Дата      Номер заказа Источник
0  2023-06-02  6857886514054418  cityads
1  2023-06-03  6858636614093599  cityads
1  2023-06-03  6858634464093342  cityads
2  2023-06-03  6858887364118002     2gis
3  2023-06-04  6858025994065429   yandex
4  2023-06-05  6858706704101675   yandex
4  2023-06-05  6858722124103264   yandex
4  2023-06-05  6858887364118056   yandex
▲ 3
from ast import literal_eval

df["Номер заказа"] = df["Номер заказа"].apply(literal_eval)
df = df.explode("Номер заказа")