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

时间:2015-06-02 23:32:14

标签: python pandas

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

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

但是这太过于笨拙而无法随时更改,无论如何,它只会取代.head()功能,而不会取代.tail()功能。

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

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

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

5 个答案:

答案 0 :(得分:12)

不,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

答案 1 :(得分:2)

将其转置以使用头部并返回

df.T.head().T

避免索引切片或自定义方法。

答案 2 :(得分:1)

最近的模拟,你可以把它放在一个函数中:

// For "43.3"
array(3) {
  [0]=>
  string(4) "43.3"  // whole match
  [1]=>
  string(2) "43"    // first capturing group
  [2]=>
  string(1) "3"     // second capturing group
}
// For "1."
array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "1"
}
// For "12345"
array(2) {
  [0]=>
  string(5) "12345"
  [1]=>
  string(5) "12345"
}

答案 3 :(得分:0)

你可以使用df.col.head(n)来做你想做的事情......见下面的例子,

df = pd.DataFrame({'a': [i for i in range(101)],
                   'b': [i for i in range(101)]})
df.a.head(4)

Out[37]:
0    0
1    1
2    2
3    3
Name: a, dtype: int64

答案 4 :(得分:0)

您可以将数字放在方括号内,该数字将显示n个第一个/最后一个数字 数据框中的行数。

df.head(10)

您甚至可以输入比默认数字小的数字(如果需要)。

df.head(2)