Python:如何使用列值复制 Dataframe 中的行,但将列值更改为其范围

Python: How to replicate rows in Dataframe with column value but changing the column value to its range

有一个数据框 df

Store   Aisle   Table
11      59      2
11      61      3

需要复制这些行w.r.t。列 'Table' 次更改 'Table' 列值如下:

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

谢谢!

之后你可以做一个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

我们可以试试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