Tengo un DataFrame de pandas que se parece a esto
string count values
----
string1 3 vals1
string2 2 vals2
Y quiero deshacerme de la columna "contar" repitiendo cada fila "contar" veces para obtener un DataFrame como este
string1 vals1
string1 vals1
string1 vals1
string2 vals2
string2 vals2
¿Hay una receta fácil de Pandas para esta operación?
3 respuestas
No estoy seguro si hay una mejor forma nativa, pero podría hacer algo como
>>> df.iloc[np.repeat(np.arange(len(df)), df["count"])]
string count values
0 string1 3 vals1
0 string1 3 vals1
0 string1 3 vals1
1 string2 2 vals2
1 string2 2 vals2
Para obtener algo para comenzar, y luego elimine el conteo y (si lo desea) reset_index(drop=True)
.
No creo que haya una manera fácil de hacer esto (como en una función). Aquí hay una solución alternativa que crea una lista anidada que luego se usa para recrear el marco de datos extendido.
# Sample data.
df = pd.DataFrame({'string': ['string1', 'string2'], 'count': [3, 2], 'values': ['vals1', 'vals2']})
>>> df
count string values
0 3 string1 vals1
1 2 string2 vals2
# Use nested list comprehension to repeat selected columns of each row `count` times.
df2 = pd.DataFrame([[row['string'], row['values']]
for _, row in df.iterrows()
for _ in range(row['count'])],
columns=['string', 'values'])
>>> df2
string values
0 string1 vals1
1 string1 vals1
2 string1 vals1
3 string2 vals2
4 string2 vals2
Tratar:
Df.groupby (['string', 'values']). apply (lambda x: pd.concat ([x] * sum (x ['count']))). reset_index (drop = True)
Suponiendo que desea la suma en casos de más de una línea de conteo.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.