#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')