#python #list #dataframe #replicate
#python #Список #фрейм данных #реплицировать
Вопрос:
Я не уверен, что это лучший способ назвать это. Если у меня есть фрейм данных и один из столбцов, давайте назовем его «Тегами», может содержать список, а может и нет. Если «Теги» — это список, то я хочу повторить эту строку столько раз, сколько уникальных элементов в столбце «Теги», но затем заменить элементы в этом столбце уникальным элементом для каждой строки.
Пример:
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28'],
'Item': 'My_fake_item',
'Tags': [['A', 'B']],
'Count': 3}
df = pd.DataFrame(df, columns=['Date', 'Item', 'Tags', 'Count'])
Ответ №1:
Примените explode
метод, например
df_exploded = (
df.set_index(["Date", "Item", "Count"])
.apply(pd.Series.explode)
.reset_index()
)
приведет к
df_exploded
>>>
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
и нет необходимости проверять, является ли элемент списком или нет в столбце
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28', '2020-11-01'],
'Item': ['My_fake_item', 'My_other_item'],
'Tags': [['A', 'B'], 'C'],
'Count': [3, 5]}
df = pd.DataFrame(df, columns=['Date', 'Item', 'Tags', 'Count'])
приведет к
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
2 2020-11-01 My_other_item 5 C
Комментарии:
1. Спасибо, это сработало как шарм. Я никогда раньше не видел этого метода.