存储
当在Excel中存储多个Sheet时,不可以直接遍历字典,循环df.to_excel(),这样做的话前一个Sheet会不断被后一个Sheet覆盖,最后只存下来最后一个Sheet。
想要不被覆盖可以通过pd.ExcelWriter()进行如下操作,其中dic为存储DataFrame的字典,dic_key对应每个Sheet名。
with pd.ExcelWriter("excel_name.xlsx") as writer:
for dic_key in dic.keys():
print('Saving data of ' + str(detector))
dic[dic_key].to_excel(writer, sheet_name = str(detector))
print('Done!')
writer.save()
writer.close()
读取
上一问题的对偶过程是将Excel各Sheet的数据读取成一个字典包含多个DataFrame的形式。可以先建立空字典(dic),读取Excel的Sheet名字(sheet_name)作为字典的键,再循环读取每个Sheet的数据。过程如下。
dic = {}
# 读取excel的Sheet名
sheet_names = pd.ExcelFile('excel_name.xlsx').sheet_names
for sheet_name in sheet_names:
print('Loading data of Sheet ' + sheet_name + '...')
dds[sheet_name] = pd.read_excel('excel_name.xlsx', sheet_name=sheet_name, index_col=0)
print('Done!')