关于pandas写入excel不同sheet的方法
2018-06-08 本文已影响0人
那年的茶馆
学习笔记
需求:根据客户(某证券公司)需求,是要做一套自动化流程处理,主要是合作方软件和python脚本的兼顾使用。目前,是需要将网页复制的数据放到excel中,之前是直接粘贴过去,但问题是某些以'0'开头的数字会被自动屏蔽,必须是邮编格式才可以显示,包括浮点数自动舍去后面的'0'等问题。用pandas写入也一样,最后发现是没指定类型。
学习的内容:
- pandas的dataframe组合
- pandas将内容写入excel的不同sheet
- 写入excel时显示0开头数字
代码介绍:
-
get_header
为获取列名,返回列表,组装到存有数据的dataframe; -
gen_df
为获取有空值的数据,并将空值置为null; -
write_excel
将数据写入excel,可以写入不同sheet;
def get_header():
"""
获取列名
return: list
"""
df1 = pd.read_clipboard(header=None, dtype=str)
headers = [i.pop() for i in np.array(df1).tolist()]
return headers
def gen_df():
"""针对复制源数据有空值的"""
df3 = pd.read_clipboard(header=None, sep=r'\s', dtype=str).replace('nan', '')
return df3
def write_excel(headers, sheet, df_piece=None):
"""
数据写入到Excel,可以写入不同的sheet
"""
df2 = pd.read_clipboard(header=None, dtype=str)
if df_piece is not None: # 主要针对有空值得时候,需要拼接df
df2 = df2.append(df_piece)
writer = pd.ExcelWriter(r'C:\Users\hand\Desktop\result\data.xlsx', engine='openpyxl')
print(df2)
if os.path.exists(r'C:\Users\hand\Desktop\result\data.xlsx') != True:
df2.to_excel(writer, sheet_name=sheet, index=None)
else:
book = load_workbook(writer.path)
writer.book = book
df2.to_excel(writer, index=False, sheet_name=sheet, header=headers)
writer.save()
writer.close()