Как напечатать голову и хвост панд без колонн на хвосте - PullRequest
1 голос
/ 06 апреля 2019

Я перевернул свои данные в пандах и хочу напечатать голову и хвост друг на друге без столбцов на хвостовой части.

Код:

import datetime 
import itertools as it
import numpy as np
import csv

start = datetime.datetime(1996, 12, 16)
end = datetime.datetime(2019, 4, 4)

df = pd.read_csv('Filename.txt')
df.columns = ['C1','c2','c3','c4']
df = df.set_index('C1')
reversed_df = df.iloc[::-1]

print(reversed_df.head(),reversed_df.tail())

Вывод:

             c2  c3  c4
C1                  
1900-12-16   8   0   0
1900-12-17   8   0   1
1900-12-18   8   0   2
1900-12-19   8   0   3
1900-12-20   8   0   4            c2  c3  c4
C1                
2000-03-30   8   0   5
2000-03-31   8   0   6
2000-04-01   8   0   7
2000-04-02   8   0   8
2000-04-03   8   0   9

Я бы хотел избавиться от второго (C1, c2, c3, c4) над хвостом.Таким образом, вывод выглядит следующим образом.

             c2  c3  c4
C1                  
1900-12-16   8   0   0
1900-12-17   8   0   1
1900-12-18   8   0   2
1900-12-19   8   0   3
1900-12-20   8   0   4           

2000-03-30   8   0   5
2000-03-31   8   0   6
2000-04-01   8   0   7
2000-04-02   8   0   8
2000-04-03   8   0   9

Ответы [ 3 ]

4 голосов
/ 06 апреля 2019

Я не могу сделать голову или хвост этого запроса, но я могу сделать оба, используя pd.concat:

n = 5
head_tail = pd.concat([df[:n], df[-n:]])

Вы также можете напечатать голову и хвост отдельно.Однако, чтобы удалить заголовки из tail, вызовите to_string и передайте header=False,

print(df.tail().to_string(header=False))
2 голосов
/ 06 апреля 2019

Редактировать: добавить опцию, если для 'c1' задан индекс строки

Я просто понимаю, что ваши данные имеют c1 в качестве индекса строки.В этом случае вам просто нужно добавить index_names=False к to_string

In [84]: df
Out[84]:
            c2  c3  c4
c1
1900-12-16   8   0   0
1900-12-17   8   0   1
1900-12-18   8   0   2
1900-12-19   8   0   3
1900-12-20   8   0   4
2000-03-30   8   0   5
2000-03-31   8   0   6
2000-04-01   8   0   7
2000-04-02   8   0   8
2000-04-03   8   0   9


In [87]: print(df.head(2).to_string(header=df.columns.tolist(), index_names=False), df.tail(2).to_string(header=False, index_names=False) ,sep='\n\n')
           c2 c3 c4
1900-12-16  8  0  0
1900-12-17  8  0  1

2000-04-02  8  0  8
2000-04-03  8  0  9

Примечание : я использую df для простой демонстрации.Просто замените df на reversed_df, чтобы получить желаемый результат.

Оригинал:
Это выполнимо, если вы используете параметры to_string, tolist и print.

In [59]: df
Out[59]:
            c2  c3  c4
1900-12-16   8   0   0
1900-12-17   8   0   1
1900-12-18   8   0   2
1900-12-19   8   0   3
1900-12-20   8   0   4
2000-03-30   8   0   5
2000-03-31   8   0   6
2000-04-01   8   0   7
2000-04-02   8   0   8
2000-04-03   8   0   9

Я просто распечатываюhead(2) и tail(2) для демонстрации

In [65]: print(df.head(2).to_string(header=df.columns.tolist()), df.tail(2).to_string(header=False) ,sep='\n\n')
           c2 c3 c4
1900-12-16  8  0  0
1900-12-17  8  0  1

2000-04-02  8  0  8
2000-04-03  8  0  9
1 голос
/ 06 апреля 2019

Близко к тому, что холодно, но здесь я использую drop

n=5
print(df.drop(df.index[n:-n]))


df.drop(df.index[n:-n]).to_string(header=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...