是否有一个pandas函数来显示第一个/最后一个n列,如.head()和.tail()?

MMe*_*cki 13 python pandas

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

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

但这太过笨重了,不能随时改变,无论如何,它只会取代.head()功能,而不是.tail()功能.

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

它可能看起来像一个短的代码,但老实说,它不像我使用.head()那样直观或快捷.

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

unu*_*tbu 13

不,这些方法不是由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)))
Run Code Online (Sandbox Code Playgroud)

所以现在所有的 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
Run Code Online (Sandbox Code Playgroud)

如果您将代码放在实用程序模块中,比如说utils_pandas.py,那么可以使用import语句激活它:

import utils_pandas
Run Code Online (Sandbox Code Playgroud)