Python Dataframe扩展行和生成id



我有一个这样的数据框架:

name       quantity
a           5
e           4
g           7

预期输出:

name            id
a              1
a              2
a              3
a              4
a              5
e              1
e              2
e              3
e              4   
g              1
g              2 
g              3
g              4
g              5
g              6
g              7

我想为每个名字创建id。对于他们的每一个数量,ID从1开始,到id = quantity结束。我怎样才能做到这一点呢?

您可以在数量栏中将reindexrepeat合并,然后使用cumcount+1来获得您想要的结果:

new_df = df.reindex(df.index.repeat(df.quantity)).drop('quantity',axis=1)
new_df['id'] = new_df.groupby('name').cumcount()+1

name  id
0    a   1
0    a   2
0    a   3
0    a   4
0    a   5
1    e   1
1    e   2
1    e   3
1    e   4
2    g   1
2    g   2
2    g   3
2    g   4
2    g   5
2    g   6
2    g   7

尝试一次运行每一行并检查我们做了什么。我们首先根据数量列中的值重复行数。然后用'name'分组后用cumcount()+1替换quantity中的值

最新更新