是否有pandas函数显示前/后n列,如.head()和.tail()一样?
我喜欢在熊猫中使用.head()
and.tail()
函数来显示一定数量的行(有时我想要更少的行,有时我想要更多!)。但是有没有办法用DataFrame的列来做到这一点?
是的,我知道我可以更改显示选项,例如: pd.set_option('display.max_columns', 20)
但这太笨拙了,以至于无法随时进行更改,无论如何,它只会替换.head()
功能,而不能替换.tail()
功能。
我也知道这可以使用访问器来完成:
yourDF.iloc[:,:20]
模拟.head(20)和yourDF.iloc[:,-20:]
模拟.tail(20)。
它可能看起来像是一小段代码,但是说实话,它不像我使用.head()时那样直观,也不快捷。
是否存在这样的命令?我找不到一个!
-
不,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