我需要将一个dataframe插入到Excel文件中,每个日期列的格式为DD/MM/YYYY
。
我使用dataframe.to_excel
函数将 Dataframe 发送到输出文件中,使用ExcelWriter
,并正确设置了date_format
和datetime_format
参数。
该格式正确地插入到datetime
对象的excel文件中,但我的输出文件决定该对象是Custom
,并将其转换为YYYY-MM-DD
。
奇怪的是,当我编辑相应的单元格时,它们的格式正确,并且当设置为Short Date
对象时,它们保持不变。我如何使这成为默认行为,以便它是我打开文件时看到的第一件事,而不必将列设置为Short Date
?
请注意,我需要这个工作列,而不是细胞。我使用这个程序处理大量数据,并且不希望遍历类型为datetime
的每列的每个单元格。
下面是我的代码的一个非常简化的版本。
from pandas import DataFrame, ExcelWriter, to_datetime
from pandas._libs.tslibs.timestamps import Timestamp
def Send_Dataframe_To_Excel(dataframe):
columns_of_type_datetime = list(dataframe.select_dtypes(include=["datetime", "datetime64", "datetime64[ns]", "datetimetz"]).columns)
#find all columns of type datetime
for column in columns_of_type_datetime :
dataframe[column] = to_datetime(dataframe[column], format='%Y-%m-%d %H:%M:%S', errors='coerce').dt.date
#convert them to pandas datetime
with ExcelWriter("output_file.xlsx", engine="openpyxl", date_format='DD/MM/YYYY', datetime_format='DD/MM/YYYY') as writer:
dataframe.to_excel(writer, sheet_name="Sheet1", index=False)
dataframe = DataFrame({'ID': [1, 2, 3, 4, 5, 6, 7],
'text_data': ['text1', 'text2', 'text3', 'text4', 'text5', 'text6', 'text7'],
'number_data': [11, 12, 13, 14, 15, 16, 17,],
'date_data': [Timestamp('2011-01-01 00:20:00'), Timestamp('2012-02-02 00:00:00'), Timestamp('2013-03-03 00:00:00'), Timestamp('2014-04-04 00:00:00'), Timestamp('2015-05-05 00:00:00'), Timestamp('2016-06-06 00:00:00'), Timestamp('2017-07-07 00:00:00')]})
Send_Dataframe_To_Excel(dataframe)
下面是我在输出文件中期望的内容:
下面是输出文件的实际结果(如您所见,我可以将单元格类型永久设置为Short Date
,“修复”了这个问题,但这不是默认行为。此外,“Personnalisé”表示“Custom”,“Date courte”表示“Short date”):
1条答案
按热度按时间r1zhe5dt1#
这是一个开放的问题(* 参见,GH44284)。
现在,您需要切换( 如果可能 )到默认引擎( 如果已安装 *,则为 *
xlxwriter
*):输出: