Streamlit中st.date_input()如何去除时间戳T00:00:00?
如何去除Streamlit st.date_input()返回日期中的T00:00:00时间戳
当使用Streamlit的st.date_input()获取日期并存入DataFrame时,常会出现日期附带T00:00:00时间戳的问题,以下是两种简单的解决方法:
方法一:将日期格式化为字符串存入DataFrame
直接使用strftime()方法把st.date_input()返回的datetime.date对象格式化为纯日期字符串,这样存入DataFrame后就不会带时间戳:
修改你的newData定义部分:
if submitButton: st.write(dataClasse, genere, idCode, duradaClasse) newData = { "Data de la classe": dataClasse.strftime("%Y-%m-%d"), # 格式化为YYYY-MM-DD的字符串 "Genere": genere, "ID": idCode, "Durada de la classe": duradaClasse, "Preu": preu } df = df.append(newData, ignore_index=True) df.to_excel("classes_particulars.xlsx", index=False)
你可以根据需求调整strftime()的格式参数,比如"%d/%m/%Y"对应日/月/年的格式。
方法二:保存Excel时指定日期格式
如果希望DataFrame中保留日期类型(而非字符串),可以在保存到Excel时通过date_format参数指定日期显示格式,这样Excel中会显示纯日期:
df.to_excel("classes_particulars.xlsx", index=False, date_format="%Y-%m-%d")
这种方式下,DataFrame内部仍会存储完整的datetime类型,但Excel输出时仅显示日期部分。
补充说明
st.date_input()返回的是datetime.date对象,当该对象被存入pandas DataFrame时,会自动转换为datetime64[ns]类型,默认显示附带00:00:00的时间戳。上述两种方法分别从存储类型和输出格式两个角度解决了这个问题。
内容的提问来源于stack exchange,提问作者Adrià Martínez
相关产品推荐
相关产品推荐

