一尘不染

Python Pandas read_csv跳过行但保留标题

python

我在弄清楚如何跳过csv文件中的n行但保留标题为1行时遇到了麻烦。

我想做的是迭代但保留第一行的标题。 skiprows将标题设置为跳过的行之后的第一行。最好的方法是什么?

data = pd.read_csv('test.csv', sep='|', header=0, skiprows=10, nrows=10)

阅读 262

收藏
2020-12-20

共1个答案

一尘不染

您可以将行号列表传递给skiprows而不是整数。

通过给该函数提供整数10,您只需跳过前10行。

要保留第一行0(作为标题),然后将其他所有内容都跳过到第10行,您可以编写:

pd.read_csv('test.csv', sep='|', skiprows=range(1, 10))

其他跳过行的方法 read_csv

控制哪些行read_csv使用的两种主要方法是headerskiprows参数。

假设我们有以下带有一行的CSV文件:

a
b
c
d
e
f

在下面的每个示例中,该文件均为f = io.StringIO("\n".join("abcdef"))

  • 读取所有行作为值(无标题,默认为整数)

    >>> pd.read_csv(f, header=None)
    

    0
    0 a
    1 b
    2 c
    3 d
    4 e
    5 f

  • 使用特定的行作为标题(跳过之前的所有行):

    >>> pd.read_csv(f, header=3)
    

    d
    0 e
    1 f

  • 使用多行作为创建MultiIndex的标题(跳过最后指定的标题行之前的所有行):

    >>> pd.read_csv(f, header=[2, 4])
    

    c
    e
    0 f

  • 从文件的开头跳过N行(未跳过的第一行是标题):

    >>> pd.read_csv(f, skiprows=3)
    

    d
    0 e
    1 f

  • 通过指定行索引来跳过一个或多个行(未跳过的第一行是标题):

    >>> pd.read_csv(f, skiprows=[2, 4])
    

    a
    0 b
    1 d
    2 f

2020-12-20