1、去掉nan和NaT
输出的部份表格如图:nan是np模块的数据空缺;NaT是pd模块的数据空缺,是时间缺失值。想要在数据缺失部分显示空白,但是 fillna('')没有用,后来找到了如下代码:
import numpy as np
# 遍历列,去掉nan
for i in df.columns:
df[i] = np.where(df[i] == 'nan', np.nan, df[i]) #强制转换
df.fillna('')
# 去掉NaT
## 如果日期列是str,先转换成datetime格式,然后用apply()函数,这里的意思是如果不为空则转换,否则为''
df['日期'] = pd.to_datetime(df['日期']).apply(lambda x: x.strftime('%Y-%m-%d')if not pd.isnull(x) else '')
## 如果已经是datetime格式了,直接apply即可
2.excel输出格式
import xlrd
import xlwt
def format(path_tempt, path_out):
# 读入工作表
data0 = xlrd.open_workbook(path_tempt)
sheet0 = data0.sheet_by_name('Sheet1')
data1 = copy(data0)
sheet1 = data1.get_sheet(0) #表示get第一张工作表
#设置header格式
font = xlwt.Font() #初始化
style0 = xlwt.XFStyle() #初始化
font.bold = True #加粗
font.height = 220 #设置字体11号
font.name = '宋体'
style0.font = font
# 设置格式
style1 = xlwt.XFStyle()
font = xlwt.Font()
font.name = '宋体'
font.bold = True
font.height = 220
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 22 # 灰色填充
style1.font = font
style1.pattern = pattern
# 写入单元格
for j in range(len(df_change.columns)):
sheet1.write(0,j,sheet0.cell(0,j).value, style0) # sheet.write(row, column, value, style)
for i in range(14):
sheet1.write(0,i,sheet0.cell(0,i).value,style1)
data1.save(path_tempt)
def format(df_change, path_out)
3. 文件重命名
上面的tempt是过渡文件,因为我想要更改工作表的名字,但是没有找到怎么用workbook改,最后是用pd.to_excel解决的
import os
def sheet_rename(path_tempt, path_out, out_name):
df_sheet = pd.read_excel(path_tempt)
df_sheet.to_excel(path_out, out_name, index = False) # 更改out_name)
# 删除过渡文件
try:
os.remove(path_tempt)
except:
pass