是否有pandas函数显示前/后n列,如.head()和.tail()一样?

发布于 2021-01-29 18:10:09

我喜欢在熊猫中使用.head()and.tail()函数来显示一定数量的行(有时我想要更少的行,有时我想要更多!)。但是有没有办法用DataFrame的列来做到这一点?

是的,我知道我可以更改显示选项,例如: pd.set_option('display.max_columns', 20)

但这太笨拙了,以至于无法随时进行更改,无论如何,它只会替换.head()功能,而不能替换.tail()功能。

我也知道这可以使用访问器来完成:
yourDF.iloc[:,:20]模拟.head(20)和yourDF.iloc[:,-20:]模拟.tail(20)。

它可能看起来像是一小段代码,但是说实话,它不像我使用.head()时那样直观,也不快捷。

是否存在这样的命令?我找不到一个!

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    不,Pandas不提供此类方法,但是您可以很容易地自己制作这些方法:

    import pandas as pd
    def front(self, n):
        return self.iloc[:, :n]
    
    def back(self, n):
        return self.iloc[:, -n:]
    
    pd.DataFrame.front = front
    pd.DataFrame.back = back
    
    df = pd.DataFrame(np.random.randint(10, size=(4,10)))
    

    因此,现在 所有 DataFrame都将拥有以下方法:

    In [272]: df.front(4)
    Out[272]: 
       0  1  2  3
    0  2  5  2  8
    1  9  9  1  3
    2  7  0  7  4
    3  8  3  9  2
    
    In [273]: df.back(3)
    Out[273]: 
       7  8  9
    0  3  2  7
    1  9  9  4
    2  5  7  1
    3  3  2  5
    
    In [274]: df.front(4).back(2)
    Out[274]: 
       2  3
    0  2  8
    1  1  3
    2  7  4
    3  9  2
    

    如果将代码放在实用程序模块中,例如utils_pandas.py,则可以使用import语句将其激活:

    import utils_pandas
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看