单个iloc操作中的熊猫的前5行和后5行

时间:2019-04-16 01:54:28

标签: python pandas

我需要多次检查df.head()df.tail()。 使用df.head(), df.tail()时,jupyter笔记本会显示难看的输出。

是否有任何一行命令,因此我们只能选择前5行和后5行:

类似的东西:
df.iloc[:5 | -5:] ?

测试示例:

df = pd.DataFrame(np.random.rand(20,2))
df.iloc[:5]

更新
丑陋但可行的方法:

df.iloc[(np.where( (df.index < 5) | (df.index > len(df)-5)))[0]]

or,
df.iloc[np.r_[np.arange(5), np.arange(df.shape[0]-5, df.shape[0])]]

3 个答案:

答案 0 :(得分:2)

尝试看看numpy.r_

df.iloc[np.r_[0:5, -5:0]]
Out[358]: 
           0         1
0   0.899673  0.584707
1   0.443328  0.126370
2   0.203212  0.206542
3   0.562156  0.401226
4   0.085070  0.206960
15  0.082846  0.548997
16  0.435308  0.669673
17  0.426955  0.030303
18  0.327725  0.340572
19  0.250246  0.162993

head + tail也不错

df.head(5).append(df.tail(5))
Out[362]: 
           0         1
0   0.899673  0.584707
1   0.443328  0.126370
2   0.203212  0.206542
3   0.562156  0.401226
4   0.085070  0.206960
15  0.082846  0.548997
16  0.435308  0.669673
17  0.426955  0.030303
18  0.327725  0.340572
19  0.250246  0.162993

答案 1 :(得分:1)

.SaveChanges

这是查询索引的一种方法。您可以将值更改为所需的任何值。

答案 2 :(得分:1)

另一种方法(按this个帖子)

生成一些虚拟/演示数据

df = pd.DataFrame({'a':range(10,100)})

print(df.head())
    a
0  10
1  11
2  12
3  13
4  14

print(df.tail())
     a
85  95
86  96
87  97
88  98
89  99

print(df.shape)
(90, 1)

生成所需索引列表

ls = list(range(5)) + list(range(len(df)-5, len(df)))

print(ls)
[0, 1, 2, 3, 4, 85, 86, 87, 88, 89]

使用索引列表切片DataFrame

df_first_last_5 = df[df.index.isin(ls)]

print(df_first_last_5)
     a
0   10
1   11
2   12
3   13
4   14
85  95
86  96
87  97
88  98
89  99