我在弄清楚如何跳过csv文件中的n行但保留标题为1行时遇到了麻烦。
我想做的是迭代但保留第一行的标题。 skiprows
将标题设置为跳过的行之后的第一行。最好的方法是什么?
data = pd.read_csv('test.csv', sep='|', header=0, skiprows=10, nrows=10)
Answers:
您可以将行号列表传递给skiprows
而不是整数。
通过给该函数提供整数10,您只需跳过前10行。
要保留第一行0(作为标题),然后将其他所有内容都跳过到第10行,您可以编写:
pd.read_csv('test.csv', sep='|', skiprows=range(1, 10))
read_csv
控制哪些行read_csv
使用的两种主要方法是header
或skiprows
参数。
假设我们有以下带有一行的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
为了扩展@AlexRiley的答案,该skiprows
参数采用数字列表,该数字列表确定要跳过的行。所以:
pd.read_csv('test.csv', sep='|', skiprows=range(1, 10))
是相同的:
pd.read_csv('test.csv', sep='|', skiprows=[1,2,3,4,5,6,7,8,9])
忽略特定行的最佳方法是创建忽略列表(手动创建或使用类似函数range
返回整数列表)并将其传递给skiprows
。