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
有一个数据框 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