向量化函数以使用 Pandas 复制行

Vectorizing a Function to Replicate Rows with Pandas

上下文:

我有一个包含一列的 DataFrame 和一个根据“计数”列中的数字复制一行的函数。在处理较大的数据集时,我当前的方法非常慢:

def replicate_row(df):
    for i in range(len(df)):
        row = df.iloc[i]
        if row['count']>0:
           rep = int(row['count'])-1
           if rep != 0:
               full_df = full_df.append([row]*rep, ignore_index=True)

我正在尝试弄清楚如何更快地将此函数向量化为 运行,到目前为止发现:

def vector_function(
    pandas_series: pd.Series) -> pd.Series:
    scaled_series = pandas_series['count'] - 1
    *** vectorized replication code here ? ***
    return scaled_series

示例数据

Name    Age    Gender    Count
Jen     25     F         3
Paul    30     M         2

DF 的预期结果为:

Name    Age    Gender    
Jen     25     F         
Jen     25     F         
Jen     25     F         
Paul    30     M         
Paul    30     M         

尝试使用 pd.Index.repeat:

df = f.loc[df.index.repeat(df['Count'])].reset_index(drop=True).drop('Count', axis=1)

输出:

>>> df
   Name  Age Gender
0   Jen   25      F
1   Jen   25      F
2   Jen   25      F
3  Paul   30      M
4  Paul   30      M