使用nrows和skiprows

时间:2015-12-17 13:15:59

标签: python pandas

我正在通过使用变量nbr_rows_to_readnbr_rows_to_skip

定义要读取的行数和要跳过的行数来读取大数据文件
data_df = pd.read_csv(data_file, delimiter="|", nrows=nbr_rows_to_read,
                      skiprows=nbr_rows_to_skip, 
                      dtype={'col1':object,'col2':object,'col3':object, 'col4': object})

问题在于,列名仅在跳过0行的第一个块中读取。对于其他块,我得到定义为列名的值的第一行。如何将列名保留在其他块中?

1 个答案:

答案 0 :(得分:1)

IIUC您可以在read_csv的参数list中的integer上使用skiprows个号码:

  

skiprows:list-like或integer,默认无

     

要在文件开头跳过(0索引)或要跳过的行数(int)的行号

演示:

import pandas as pd
import io

#test data
temp=u"""id|col1|col2|col3
1|13|15|0
1|13|15|1
1|13|15|2
1|12|15|3
1|13|15|4
1|12|15|5
1|12|15|6
2|18|15|7"""


#skip first data rows, keep header
nbr_rows_to_skip = range(1, 2)
nbr_rows_to_read = 6 

data_df = pd.read_csv(io.StringIO(temp), delimiter="|", nrows=nbr_rows_to_read, skiprows=nbr_rows_to_skip, dtype={'col1':object,'col2':object,'col3':object, 'col4': object})
print data_df
#   id col1 col2 col3
#0   1   13   15    1
#1   1   13   15    2
#2   1   12   15    3
#3   1   13   15    4
#4   1   12   15    5
#5   1   12   15    6