Estoy buscando la mejor manera de obtener una vista previa rápida de la primera y última N filas de un DataFrame al mismo tiempo.
Me doy cuenta de que puedo usar df.head (N) y df.tail (N) por separado, pero esto devuelve dos marcos de datos. ¿Es mejor simplemente llamar a estas 2 funciones separadas y concatenar las dos, o hay un método más simple para esto?
Actual:
df.head(5) # first 5 rows
df.tail(5) # last 5 rows
Deseada:
df.headtail(5) # 10 rows total
Me gustaría mostrar las primeras y últimas 5 filas como un solo DataFrame para obtener una vista previa rápida del 'rango' de mi conjunto de datos.
3 respuestas
Aquí hay otra manera:
df = pd.DataFrame({'item': range(100)})
sliced_df = df.head(5)
sliced_df = sliced_df.append(df.tail(5))
print (sliced_df)
# output
item
0 0
1 1
2 2
3 3
4 4
95 95
96 96
97 97
98 98
99 99
Simple con .iloc
y construya un segmento a partir de range
Muestra:
np.random.seed(0)
df = pd.DataFrame(np.random.randint(0, 999, 100).reshape(20,5), columns=list('ABCDE'))
Out[240]:
A B C D E
0 684 559 629 192 835
1 763 707 359 9 723
2 277 754 804 599 70
3 472 600 396 314 705
4 486 551 87 174 600
5 849 677 537 845 72
6 777 916 115 976 755
7 709 847 431 448 850
8 99 984 177 755 797
9 659 147 910 423 288
10 961 265 697 639 544
11 543 714 244 151 675
12 510 459 882 183 28
13 802 128 128 932 53
14 901 550 488 756 273
15 335 388 617 42 442
16 543 888 257 321 937
17 57 291 870 119 779
18 430 82 91 896 398
19 611 565 908 633 938
head_tail_slice = list(range(5))+list(range(-5,0))
df.iloc[head_tail_slice]
Out[242]:
A B C D E
0 684 559 629 192 835
1 763 707 359 9 723
2 277 754 804 599 70
3 472 600 396 314 705
4 486 551 87 174 600
15 335 388 617 42 442
16 543 888 257 321 937
17 57 291 870 119 779
18 430 82 91 896 398
19 611 565 908 633 938
print(df.to_string(max_rows=10))
Ejemplo:
>>> df = pd.DataFrame({'one': range(100)})
>>> print(df.to_string(max_rows=10))
one
0 0
1 1
2 2
3 3
4 4
.. ...
95 95
96 96
97 97
98 98
99 99
Del mismo modo, puede configurar max_cols
Una versión un poco menos agradable (en mi humilde opinión) que devuelve una porción del marco de datos:
df.iloc[[*range(5), *range(-5, 0)]]
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.