如何防止 Excel 从时间戳中删除秒?
Posted
技术标签:
【中文标题】如何防止 Excel 从时间戳中删除秒?【英文标题】:How can I prevent Excel from removing seconds from timestamps? 【发布时间】:2020-10-21 05:50:12 【问题描述】:我有一个具有第二分辨率的时间序列数据帧,我将其保存到 CSV 文件中:
import pandas as pd
dr = pd.date_range('01/01/2020 9:00', '01/01/2020 9:10', freq='1s')
df = pd.DataFrame(index=dr, data=range(len(dr)))
df.to_csv('some_data.csv', header=False)
然后我可以在 Excel 中打开它,一切看起来都很好:
如果我随后将文件保存在 Excel 中(不做任何更改),在重新打开时秒数会向下舍入为 0:
在记事本中查看 Excel 保存的文件表明 秒数已丢失:
1/1/2020 9:00,0
1/1/2020 9:00,1
1/1/2020 9:00,2
...
保存为副本或覆盖时会发生更改。奇怪的是,如果您在保存原始文档后保持打开状态,您仍然会看到保留的秒数,直到您关闭并重新打开。
在上下文中,我正在为其他(不使用 Python)用户编写文件,这些用户可能会使用 Excel 与他们的数据进行交互。甚至调整列的大小也会提示保存,所以我发现他们很可能会无意中丢失数据。
当我使用 Python 创建这个示例时,我也发现了用其他语言编写的时间戳的问题。
有没有更好的方法来记录时间序列数据来防止这种情况发生?或者我可以与以这种格式获取数据的用户共享 Excel 中的修复(最好是永久选项或设置)?
【问题讨论】:
在单元格格式下,你可以给它一个包含秒数的自定义模式 @MohammadAthar Athar 谢谢你的建议;我更新了对此的回应,似乎您每次打开文件时都必须这样做?如果是这样,那似乎仍然很容易丢失数据(即使用户知道这是一个修复方法,他们会记得吗?) 直接用pandasto_excel
而不是to_csv
保存怎么样?这会给你同样的问题吗? pandas.pydata.org/pandas-docs/stable/reference/api/…
你是如何保存文件的?如果您将其保存为 csv 文件,则日期/时间字段将保存为格式化。但如果您将其保存为 Excel 文件,则应保存基础值。
相关:***.com/questions/27801193/… - 似乎是 excel 试图“帮助”你的另一种情况。并最终成为一种痛苦。
【参考方案1】:
根据 cmets 发布答案:
另存为 XLSX 而不是 CSV
直接保存为 Excel 格式(df.to_excel()
而不是 df.to_csv()
)或将您的 CSV 从 Excel 保存为 Excel 格式。这将保留时间戳并且不需要任何额外的格式。 感谢vmouffron 和Ron 这种方法。
在 Excel 中格式化 CSV 的数据
另一个选项是使用具有“自定义”格式的“单元格格式”选项(用于单元格或整个日期列)(在这种情况下,更改模板“m/d/yyyy h:mm”到“m/d/yyyy h:mm:ss”)。此选项允许您保留 CSV 格式和时间数据的完整范围。 感谢Mohammad 提供此答案。
这些选项中的每一个都有一个小的缺点。首先,您必须锁定用户使用 Excel 来查看数据。但是有许多免费工具可以将数据从一种格式转换为另一种格式,因此用户很容易处理。对于第二个选项,格式化不是永久性的,每次打开文件时都必须进行格式化。这对用户来说似乎不太方便,但在某些情况下仍然可能有用。
【讨论】:
以上是关于如何防止 Excel 从时间戳中删除秒?的主要内容,如果未能解决你的问题,请参考以下文章