repitiendo las filas de un dataframe

Estoy tratando de repetir las filas de un dataframe. Aquí están mis datos originales:

pd.DataFrame([ {'col1': 1, 'col2': 11, 'col3': [1, 2] }, {'col1': 2, 'col2': 22, 'col3': [1, 2, 3] }, {'col1': 3, 'col2': 33, 'col3': [1] }, {'col1': 4, 'col2': 44, 'col3': [1, 2, 3, 4] }, ]) 

lo que me da

  col1 col2 col3 0 1 11 [1, 2] 1 2 22 [1, 2, 3] 2 3 33 [1] 3 4 44 [1, 2, 3, 4] 

Me gustaría repetir las filas dependiendo de la longitud de la matriz en col3, es decir, me gustaría obtener un dataframe como este.

  col1 col2 0 1 11 1 1 11 2 2 22 3 2 22 4 2 22 5 3 33 6 4 44 7 4 44 8 4 44 9 4 44 

¿Qué es una buena manera de lograr esto?

También puedes usar index.repeat y index.repeat

 df = df.reindex(df.index.repeat(df.col3.apply(len))) df = df.reset_index(drop=True).drop("col3", axis=1) # To reset index and drop col3 # Output: col1 col2 0 1 11 1 1 11 2 2 22 3 2 22 4 2 22 5 3 33 6 4 44 7 4 44 8 4 44 9 4 44 

Puede utilizar una lista de comprensión junto con zip .

 >>> pd.DataFrame([row for row, count in zip(df[['col1', 'col2']].values, df['col3']) for _ in range(len(count))], columns=df.columns[:2]) col1 col2 0 1 11 1 1 11 2 2 22 3 2 22 4 2 22 5 3 33 6 4 44 7 4 44 8 4 44 9 4 44