首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于列值创建具有重复行的数据

基于列值创建具有重复行的数据
EN

Stack Overflow用户
提问于 2022-05-09 16:11:10
回答 2查看 26关注 0票数 0

我正在尝试展开一个有两个列的数据集,并在python中展开它。

代码语言:javascript
运行
复制
Basket        | Times 
______________|_______
Bread         | 5     
Orange, Bread | 3     

我想,根据“泰晤士报”专栏中的数字,有那么多行。所以对于上面的例子

代码语言:javascript
运行
复制
Newcolumn  
_______ 
Bread1
Bread2
Bread3
Bread4
Bread5   
Orange, Bread1
Orange, Bread2
Orange, Bread3  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-09 16:35:18

您可以尝试在行上使用apply生成所需的列表,并对列进行explode

代码语言:javascript
运行
复制
df['Newcolumn'] = df.apply(lambda row: [f"{row['Basket']}_{i+1}" for i in range(row['Times'])], axis=1)
df = df.explode('Newcolumn', ignore_index=True)
代码语言:javascript
运行
复制
print(df)

          Basket  Times        Newcolumn
0          Bread      5          Bread_1
1          Bread      5          Bread_2
2          Bread      5          Bread_3
3          Bread      5          Bread_4
4          Bread      5          Bread_5
5  Orange, Bread      3  Orange, Bread_1
6  Orange, Bread      3  Orange, Bread_2
7  Orange, Bread      3  Orange, Bread_3
票数 1
EN

Stack Overflow用户

发布于 2022-05-09 16:23:59

使用np.repeat重复每个值所需的次数。然后groupbycumcount添加所需的后缀:

代码语言:javascript
运行
复制
import numpy as np
srs = np.repeat(df["Basket"],df["Times"])

output = (srs+srs.groupby(level=0).cumcount().add(1).astype(str)).reset_index(drop=True)

>>> output
0            Bread1
1            Bread2
2            Bread3
3            Bread4
4            Bread5
5    Orange, Bread1
6    Orange, Bread2
7    Orange, Bread3
dtype: object
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72175073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档