Как показать первые + последние N строк DataFrame - PullRequest
2 голосов
/ 06 октября 2019

Я ищу лучший способ быстрого предварительного просмотра первой и последней строк N в DataFrame одновременно.

Я понимаю, что могу использовать df.head (N) и df.tail (N) отдельно, но это возвращает два DataFrames. Лучше всего просто вызвать эти две отдельные функции и объединить их, или есть более простой метод для этого?

Текущий:

df.head(5)     # first 5 rows
df.tail(5)     # last 5 rows

Желаемый:

df.headtail(5)     # 10 rows total

Хотелось бы отобразить первые и последние 5 строк как один DataFrame для быстрого предварительного просмотра «диапазона» моего набора данных.

Ответы [ 3 ]

1 голос
/ 06 октября 2019

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)]]

0 голосов
/ 07 октября 2019

Простое с .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
0 голосов
/ 06 октября 2019

Вот еще один способ:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...