[英]Python Pandas read_csv skip rows but keep header
我在弄清楚如何跳過csv文件中的n行但保留標題為1行時遇到了麻煩。
我想做的是迭代但保留第一行的標題。 skiprows
將標題設置為跳過的行之后的第一行。 最好的方法是什么?
data = pd.read_csv('test.csv', sep='|', header=0, skiprows=10, nrows=10)
您可以通過行號到列表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
已經有了不錯的答案。.我某種程度上覺得有必要在這里添加廣義形式。.考慮這種情況:-
假設您的xls / csv的前2行(行#0,1)中有垃圾行。 第2行(第3行)是真正的標題,您要從第50行(即第51行)開始加載10行。這是代碼段:-
pd.read_csv('test.csv', header=2, skiprows=range(3, 50), nrows=10)
為了擴展@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
。
如果要遍歷一個長的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)
如果您需要跳過/刪除特定的行,請說前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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.