如何按指定次数重复DataFrame行并生成分组序列列?
问题描述
现有如下DataFrame:
| plazo | monto |
|---|---|
| 20 | 2 |
| 50 | 3 |
需要完成两个操作:
- 根据
plazo列的值重复对应行n次(比如第一行重复20次,第二行重复50次) - 新增
Semana列,为每个plazo分组分配从1开始的连续递增数值
预期结果如下:
| plazo | monto | Semana |
|---|---|---|
| 20 | 2 | 1 |
| 20 | 2 | 2 |
| ... | ... | ... |
| 20 | 2 | 20 |
| 50 | 3 | 1 |
| 50 | 3 | 2 |
| ... | ... | ... |
| 50 | 3 | 50 |
解决方案
可以通过Pandas的repeat()和分组计数实现需求,代码如下:
import pandas as pd # 初始化原始DataFrame df = pd.DataFrame({ 'plazo': [20, 50], 'monto': [2, 3] }) # 按plazo值重复对应行 df_repeated = df.loc[df.index.repeat(df['plazo'])] # 为每个plazo分组生成从1开始的递增Semana列 df_repeated['Semana'] = df_repeated.groupby('plazo').cumcount() + 1 # 输出结果 print(df_repeated)
代码说明
df.index.repeat(df['plazo']):基于索引重复机制,根据plazo的数值重复对应行数groupby('plazo').cumcount() + 1:按plazo分组后对组内行计数,加1让计数从1起始,匹配Semana的要求
内容的提问来源于stack exchange,提问作者RONHI
相关产品推荐
相关产品推荐

