tortuga
Tengo un objeto Pandas Data Frame que tiene 1000 filas y 10 columnas. Simplemente me gustaría dividir el marco de datos y tomar las primeras 10 filas. ¿Cómo puedo hacer esto? He estado tratando de usar esto:
>>> df.shape
(1000,10)
>>> my_slice = df.ix[10,:]
>>> my_slice.shape
(10,)
¿No debería my_slice ser las primeras diez filas, es decir. un marco de datos de 10 x 10? ¿Cómo puedo obtener las primeras diez filas, de modo que my_slice
Qué es un objeto de marco de datos de 10×10? Gracias.
df2 = df.head(10)
debería hacer el truco
También puede hacer como una conveniencia:
df[:10]
-
Esto parece no copiar los nombres de las columnas para mí.
– Rubén
23 de agosto de 2021 a las 12:14
gonzalo peres
Hay varias formas de hacerlo. A continuación, veremos al menos tres opciones.
Para mantener la trama de datos original df
estaremos asignando el marco de datos dividido a df_new
.
Al final, en la sección Comparación de tiempo mostraremos, utilizando un marco de datos aleatorio, los distintos tiempos de ejecución.
Opción 1
df_new = df[:10] # Option 1.1
# or
df_new = df[0:10] # Option 1.2
opcion 2
Usando head
df_new = df.head(10)
Para valores negativos de n, esta función devuelve todas las filas excepto las últimas n filas, equivalente a
df[:-n]
[Source].
Opción 3
Usando iloc
df_new = df.iloc[:10] # Option 3.1
# or
df_new = df.iloc[0:10] # Option 3.2
Comparación de tiempo
Para este caso específico se ha utilizado time.perf_counter()
para medir el tiempo de ejecución.
method time
0 Option 1.1 0.00000120000913739204
1 Option 1.2 0.00000149995321407914
2 Option 2 0.00000170001294463873
3 Option 3.1 0.00000120000913739204
4 Option 3.2 0.00000350002665072680
Como hay varias variables que pueden afectar el tiempo de ejecución, esto puede cambiar según el marco de datos utilizado y más.
Notas:
-
En lugar de
10
uno puede reemplazar las operaciones anteriores con el número de filas que desee. Por ejemplodf_new = df[:5]
devolverá un marco de datos con el primero
5
filas -
Hay formas adicionales de medir el tiempo de ejecución. Para formas adicionales, lea esto: ¿Cómo obtengo el tiempo de ejecución de un programa de Python?
-
También se pueden ajustar las opciones anteriores a una función lambda, como la siguiente
df_new = df.apply(lambda x: x[:10]) # or df_new = df.apply(lambda x: x.head(10))
Tenga en cuenta, sin embargo, que hay fuertes opiniones sobre el uso de .apply() y, para este caso, está lejos de ser un método obligatorio.
df.ix[10,:]
le da todas las columnas de la fila 10. En su caso, quiere todo hasta la fila 10, que es df.ix[:9,:]
. Tenga en cuenta que el extremo derecho del rango de división es inclusivo: http://pandas.sourceforge.net/gotchas.html#endpoints-are-inclusive
Shifu
DataFrame[:n]
devolverá las primeras n filas.