基于条件生成多行数据:按count值重复表格行
按count字段重复行生成新数据
问题说明
需要将表格中的每一行按照count列的数值重复对应次数,生成包含重复行的新表格。
输入表格
| id | name | count |
|---|---|---|
| 1 | Nishu | 4 |
| 2 | Shivam | 2 |
| 3 | Himanshu | 1 |
期望输出表格
| id | name | count |
|---|---|---|
| 1 | Nishu | 4 |
| 1 | Nishu | 4 |
| 1 | Nishu | 4 |
| 1 | Nishu | 4 |
| 2 | Shivam | 2 |
| 2 | Shivam | 2 |
| 3 | Himanshu | 1 |
| 3 | Himanshu | 1 |
解决方案
1. Excel/Google Sheets 实现
基础公式法
假设原始数据位于A2:C4(A1:C1为表头),在新区域的起始单元格(如E2)输入以下公式,横向填充至G列,再纵向拖动直到出现错误值,最后删除错误行:
=INDEX($A$2:$C$4, ROUNDUP(ROW(A1)/MAX($C$2:$C$4),0), COLUMN(A1))
简化公式(Excel 365/Google Sheets)
使用LET函数减少重复引用,一次性生成所有结果:
=LET( data, A2:C4, counts, INDEX(data,,3), total, SUM(counts), seq, SEQUENCE(total), rowNum, XMATCH(seq, SCAN(0, counts, LAMBDA(a,b,a+b)))+1, INDEX(data, rowNum, {1,2,3}) )
2. Python(Pandas)实现
利用Pandas的repeat方法快速处理:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'id': [1, 2, 3], 'name': ['Nishu', 'Shivam', 'Himanshu'], 'count': [4, 2, 1] }) # 按count列重复行 result_df = df.loc[df.index.repeat(df['count'])] # 重置索引(可选操作) result_df = result_df.reset_index(drop=True) # 输出结果 print(result_df)
3. SQL 实现
通过递归CTE实现行重复,适用于数据库中的数据:
WITH RECURSIVE repeated_rows AS ( SELECT id, name, count, 1 AS repeat_num FROM your_table -- 替换为实际表名 UNION ALL SELECT id, name, count, repeat_num + 1 FROM repeated_rows WHERE repeat_num < count ) SELECT id, name, count FROM repeated_rows ORDER BY id;
内容的提问来源于stack exchange,提问作者Juanita
相关产品推荐
相关产品推荐

