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

Gab*_*iel 12 python pandas

想要将excel电子表格(.xlsm格式,因为它有宏)中的特定范围的数据导入到pandas数据帧中.这样做是这样的:

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

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

Ero*_*rol 11

如果您知道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)
Run Code Online (Sandbox Code Playgroud)

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


小智 9

文档中所述,从 pandas 版本 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 已被弃用。


Max*_*axU 5

我想让(扩展)@Erol的答案更灵活。

假设我们不知道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')
Run Code Online (Sandbox Code Playgroud)

.dropna(axis=1, how='all')将丢弃包含所有列唯一 NaN