只想将excel电子表格(.xlsm格式,因为它有宏)中的某些数据范围导入到pandas数据框中。 这样做是这样的:
data = pd.read_excel(filepath, header=0, skiprows=4, nrows= 20, parse_cols = "A:D")
但似乎nrows仅适用于read_csv()? read_excel()的等价物是什么?
答案 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。