我正在寻找最好的方法来同时快速预览DataFrame的前N行和后N行。
我意识到我可以分别使用df.head(N)和df.tail(N),但这将返回两个DataFrame。最好是简单地调用这两个单独的函数并将它们串联起来,还是有一个更简单的方法呢?
当前:
df.head(5) # first 5 rows
df.tail(5) # last 5 rows
所需:
df.headtail(5) # 10 rows total
想将前5行和后5行显示为单个DataFrame,以便快速预览数据集的“范围”。
答案 0 :(得分:1)
print(df.to_string(max_rows=10))
示例:
>>> 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
同样,您可以设置max_cols
不太好看的版本(imho),它返回数据帧的一部分:
df.iloc[[*range(5), *range(-5, 0)]]
答案 1 :(得分:0)
这是另一种方式:
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
答案 2 :(得分:0)
使用.iloc
简单,并根据range
构造一个切片
示例:
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