我无法弄清楚如何在csv文件中跳过n行,但保留标题为1行。
我想要做的是迭代,但保留第一行的标题。 skiprows
使标题成为跳过行之后的第一行。这样做的最佳方式是什么?
data = pd.read_csv('test.csv', sep='|', header=0, skiprows=10, nrows=10)
答案 0 :(得分:70)
您可以将行号列表传递给skiprows
而不是整数。然后,读者将忽略列表中的那些行。
通过给函数提供整数10,你只需要跳过前10行。
要保持第一行0(作为标题)然后跳到第10行,您可以写:
pd.read_csv('test.csv', sep='|', skiprows=range(1, 10))
答案 1 :(得分:3)
要扩展@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
。 / p>
答案 2 :(得分:3)
已经有了很好的答案。.我不知何故在这里需要添加广义形式。.考虑这种情况:-
假设您的xls / csv的前2行(行#0,1)中有垃圾行。第2行(第3行)是真正的标题,您要从第50行(即第51行)开始加载10行。这是代码段:-
pd.read_csv('test.csv', header=2, skiprows=range(3, 50), nrows=10)
答案 3 :(得分:1)
如果要遍历一个长的csv文件,则可以使用chunksize参数。如果出于某种原因需要手动执行此操作,则可以尝试以下操作,只要知道需要执行多少次迭代即可:
for i in range(num_iters):
pd.read_csv('test.csv', sep='|', header=0,
skiprows = range(i*10 + 1, (i+1)*10), nrows=10)
答案 4 :(得分:0)
如果您需要跳过/删除特定的行,请说出前3行(即0,1,2),然后再说2行(即4,5)。您可以使用以下内容保留标题行:
df = pd.read_csv(file_in, delimiter='\t', skiprows=[0,1,2,4,5], encoding='utf-16', usecols=cols)