如何在没有尾巴的列的情况下打印熊猫的头和尾

时间:2019-04-05 22:59:03

标签: python pandas dataframe

我以熊猫为单位反转了数据,我想将头和尾同时打印在顶部,而在尾部不打印列。

代码:

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 个答案:

答案 0 :(得分:4)

我无法对此请求做出正面或反面的评论,但我可以使用pd.concat来做到这两者:

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

您也可以分别打印头和尾。但是,要从tail中删除标题,请调用to_string并传递header=False

print(df.tail().to_string(header=False))

答案 1 :(得分:2)

编辑: 在'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_stringtolistprint参数,这是可行的。

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

答案 2 :(得分:1)

接近感冒的程度,但是我在这里使用drop

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


df.drop(df.index[n:-n]).to_string(header=False)