Python:如何重复DataFrame每行组合1到n次并生成对应序列新列?
问题原因
你写的df.loc[df.index.repeat(range(3))]存在参数错误:repeat()方法接收的参数是每个索引对应的重复次数,传入range(3)相当于给第1个索引设置重复0次、第2个索引重复1次,完全不符合每行重复3次的需求。
解决方案
你可以按以下两步实现需求:
- 用
df.index.repeat(3)让每行重复3次,重置索引后新增Bit列即可 - Bit列直接用
[1,2,3] * 原df行数生成,刚好匹配每组重复行的顺序要求
完整示例代码
import pandas as pd # 构造你提供的示例df df = pd.DataFrame({ 'Store': [11, 11], 'Aisle': [59, 61], 'Table': [2, 3] }) # 1. 每行重复3次,重置旧索引 result = df.loc[df.index.repeat(3)].reset_index(drop=True) # 2. 新增Bit列 result['Bit'] = [1, 2, 3] * len(df) print(result)
输出结果
Store Aisle Table Bit 0 11 59 2 1 1 11 59 2 2 2 11 59 2 3 3 11 61 3 1 4 11 61 3 2 5 11 61 3 3
内容的提问来源于stack exchange,提问作者user12345
相关产品推荐
相关产品推荐

