在Pandas中,与read_excel()中使用的read_csv()中的'nrows'相当吗?

时间:2016-03-02 12:38:11

标签: python pandas

只想将excel电子表格(.xlsm格式,因为它有宏)中的某些数据范围导入到pandas数据框中。 这样做是这样的:

data    = pd.read_excel(filepath, header=0,  skiprows=4, nrows= 20, parse_cols = "A:D")

但似乎nrows仅适用于read_csv()? read_excel()的等价物是什么?

3 个答案:

答案 0 :(得分:10)

如果您知道Excel工作表中的行数,可以使用 skip_footer 参数来读取文件的第一行 n - skip_footer 行,其中 n 是总行数。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

用法:

data = pd.read_excel(filepath, header=0, parse_cols = "A:D", skip_footer=80)

假设您的Excel工作表有100行,此行将解析前20行。

答案 1 :(得分:4)

我想使@Erol's answer更加灵活。

假设我们不知道Excel工作表中的总行数:

xl = pd.ExcelFile(filepath)

# parsing first (index: 0) sheet
total_rows = xl.book.sheet_by_index(0).nrows

skiprows = 4
nrows = 20

# calc number of footer rows
# (-1) - for the header row
skipfooter = total_rows - nrows - skiprows - 1

df = xl.parse(0, skiprows=skiprows, skipfooter=skipfooter, parse_cols="A:D") \
       .dropna(axis=1, how='all')

.dropna(axis=1, how='all')会删除所有包含 NaN

答案 2 :(得分:1)

noted in the documentation一样,从熊猫0.23版开始,它现在是内置选项,其功能几乎与OP所述完全相同。

代码

data = pd.read_excel(filepath, header=0, skiprows=4, nrows= 20, use_cols = "A:D")

现在将读取excel文件,从第一张工作表获取数据(默认),跳过4行数据,然后将第一行(即工作表的第五行)作为标头中,将接下来的20行数据读入数据帧(第6-25行),并且仅使用A:D列。请注意,use_cols现在是最终选项,因为不建议使用parse_cols。