Python: Как реплицировать строки в Dataframe со значением столбца, но изменяя значение столбца на его диапазон

#python #pandas #repeat

#python #pandas #повторите

Вопрос:

У вас есть dataframe df

 Store   Aisle   Table
11      59      2
11      61      3
 

Необходимо реплицировать эти строки с помощью столбца ‘Таблица’ раз при изменении значения столбца ‘Таблица’, как показано ниже:

 Store   Aisle   Table
11      59      1
11      59      2
11      61      1
11      61      2
11      61      3
 

Попробовал приведенный ниже код, но это не изменяет значение, вместо этого реплицирует одну и ту же строку n раз.

 df.loc[df.index.repeat(df['Table'])]
 

Спасибо!

Ответ №1:

groupby().cumcount() После этого вы можете сделать:

 out = df.loc[df.index.repeat(df['Table'])]
out['Table'] = out.groupby(level=0).cumcount()   1
 

Вывод:

    Store  Aisle  Table
0     11     59      1
0     11     59      2
1     11     61      1
1     11     61      2
1     11     61      3
 

Ответ №2:

Мы можем попробовать explode

 out = df.assign(Table=df['Table'].map(range)).explode('Table')
Out[160]: 
   Store  Aisle Table
0     11     59     0
0     11     59     1
1     11     61     0
1     11     61     1
1     11     61     2
 

Комментарии:

1. Значение таблицы не должно начинаться с 0

2. @user12345 out = df.assign(Table=df['Table'].map(lambda x : range(1,x 1))).explode('Table')