92109


`pandas.DataFrame`で特定の列の値の回数分，行を複製する方法を探しています．

下に示すソースコードは，`num`列の値と同じ個数になるように，行を複製しています．  
しかしこれは恐らく最も効率が悪い方法です．効率的な方法が御座いましたらご教示下さい．

なお、操作前のデータフレームに同一の行は含まれないことが保証されています．

**現状のコード:**

[code]

    # Python 3.10.5
    
    import pandas as pd
    
    raw = pd.DataFrame([['a', 1], ['b', 2], ['c', 3]], columns=['name', 'num'])
    new = pd.DataFrame(columns=raw.columns)
    
    for _, row in raw.iterrows():
        for _ in range(row.num):
            new = new.append(row)
    
[/code]

**操作前のデータフレーム:**

[code]

        name    num
    0   a       1
    1   b       2
    2   c       3
    
[/code]

**操作後のデータフレーム:**

[code]

        name    num
    0   a       1
    1   b       2
    1   b       2
    2   c       3
    2   c       3
    2   c       3
    
[/code]


CC BY-SA 4.0
2022-11-09T09:54:41.963
92107
2022-11-09T11:45:36.170
2022-11-09T11:45:36.170
3060
51374
question
python python3 pandas
pandasで特定の列の値に基づき，その行を複製する方法

[code]

    >>> new = raw.iloc[raw.index.repeat(raw['num'])]
    >>> new
      name  num
    0    a    1
    1    b    2
    1    b    2
    2    c    3
    2    c    3
    2    c    3
    
[/code]


CC BY-SA 4.0
2022-11-09T11:12:41.590
92109
2022-11-09T11:12:41.590
47127
92107
answer