我尝试写一个PandasDataFrame到Excel,日期格式为"YYYY-MM-DD",省略时间。因为我需要写多个工作表,我想使用一些高级格式打开(即设置列宽),我使用ExcelWriter
对象和openpyxl
作为引擎。
现在,我似乎不知道如何格式化我的日期列。
从
import pandas as pd
df = pd.DataFrame({'string_col': ['abc', 'def', 'ghi']})
df['date_col'] = pd.date_range(start='2020-01-01', periods=3)
with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, 'test', index=False)
这将把日期写为2020-01-01 00:00:00
。由于某种原因,我不明白,添加datetime_format='YYYY-MM-DD'
没有任何效果 * 如果openpyxl是选定的引擎 *(如果engine
没有指定,工作就很好)。
所以我想解决这个问题:
with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, 'test', index=False)
writer.sheets['test'].column_dimensions['B'].width = 50
writer.sheets['test'].column_dimensions['B'].number_format = 'YYYY-MM-DD'
列宽被正确应用,但数字格式设置不正确。另一方面,它确实可以将样式应用到单个单元格:writer.sheets['test']['B2'].number_format = 'YYYY-MM-DD'
.
但是我如何将格式应用于整列(我有成千上万的单元格需要格式化)?我在openpyxl文档中找不到任何关于如何寻址整列的内容...
注:我可以:
for cell in writer.sheets['test']['B']:
cell.number_format = 'YYYY-MM-DD'
但我的观点恰恰是要避免在每个单独的单元格上进行迭代。
1条答案
按热度按时间2lpgd9681#
可以将日期视为一列字符串,并对其进行切片以得到
'YYYY-MM-DD'
: