写入DataFrame到Excel时日期格式为何自动带时间?
解决DataFrame写入Excel时日期带时间的问题
问题核心是:pandas将日期转为datetime类型后,写入Excel时会默认显示完整的datetime格式(包含00:00:00),但我们可以通过xlsxwriter引擎自定义单元格格式来只显示日期部分。
修改后的代码
import pandas as pd player_list = [ ['200712',50000], ['200714',51000], ['200716',51500], ['200719',53000], ['200721',54000], ['200724',55000], ['200729',57000]] df = pd.DataFrame(player_list, columns=['Dates','Patients']) df['Dates'] = pd.to_datetime(df['Dates'], format='%Y%m%d') title01 = 'test.xlsx' writer = pd.ExcelWriter(title01, engine='xlsxwriter') df.to_excel(writer, index=False, sheet_name='sheet1') # 获取工作表对象 workbook = writer.book worksheet = writer.sheets['sheet1'] # 定义纯日期格式 date_format = workbook.add_format({'num_format': 'yyyy-mm-dd'}) # 设置Dates列(A列)的格式,参数为列范围、宽度、格式 worksheet.set_column('A:A', 12, date_format) writer.save()
关键说明
- 利用xlsxwriter的
add_format()方法创建日期格式,指定num_format为'yyyy-mm-dd',这是Excel原生支持的日期格式代码 - 通过
set_column()方法将A列(对应DataFrame的Dates列)的单元格格式应用为纯日期格式,同时可设置列宽优化显示效果 - 该方法不修改DataFrame中datetime类型的数据,仅调整Excel端的显示格式,既保留了日期类型的可操作性,又满足显示需求
其他可选方案
如果不想依赖xlsxwriter,也可以将datetime列转为字符串格式后写入Excel,但这种方式会丢失日期的原生类型特性(比如无法在Excel中直接做日期运算):
df['Dates'] = df['Dates'].dt.strftime('%Y-%m-%d') df.to_excel('test.xlsx', index=False, sheet_name='sheet1')
优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者dimzev
相关产品推荐
相关产品推荐

