python - 如何将 float64 值转换为其等效的日期时间格式?

标签 python pandas datetime floating-point

如何将 float64 类型值转换为 datetime 类型值。

这是数据集中的前五个浮点值:

0    41245.0
1    41701.0
2    36361.0
3    36145.0
4    42226.0
Name: product_first_sold_date, dtype: float64

为了将浮点类型转换为日期时间类型值,我写了这样的:

from datetime import datetime

pd.to_datetime(y['product_first_sold_date'], format='%m%d%Y.0', errors='coerce')

但作为输出,我得到了数据集中所有行的“NaT”:

0       NaT
1       NaT
2       NaT
3       NaT
4       NaT

Name: product_first_sold_date, Length: 19273, dtype: datetime64[ns]

那么,这个:

打印(pd.to_datetime(y.product_first_sold_date, infer_datetime_format=True))

但它显示数据集中所有行的相同日期

0       1970-01-01 00:00:00.000041245
1       1970-01-01 00:00:00.000041701
2       1970-01-01 00:00:00.000036361
3       1970-01-01 00:00:00.000036145
4       1970-01-01 00:00:00.000042226

我真的不知道代码出了什么问题?

我也尝试过这个:

pd.to_datetime(pd.Series(g.product_first_sold_date).astype(str), format='%d%m%Y.0')

并将其作为输出,我还更改了格式 = '%Y%m%d.0':

ValueError: time data '41245.0' does not match format '%d%m%Y.0' (match)

看起来没有任何效果,或者可能是我做错了什么,不知道如何解决这个问题。提前致谢!

最佳答案

我假设这些浮点值代表 Excel 内部处理的日期,即自 1900 年 1 月 1 日以来的天数:

enter image description here

要将此格式转换为 Python/pandas 日期时间,您可以通过设置适当的原点和单位来实现:

df['product_first_sold_date'] = pd.to_datetime(df['product_first_sold_date'], 
                                               origin='1899-12-30',
                                               unit='D')

...给出了所提供的示例

0   2012-12-02
1   2014-03-03
2   1999-07-20
3   1998-12-16
4   2015-08-10
Name: product_first_sold_date, dtype: datetime64[ns]

此处需要注意的重要一点(请参阅 @chux-ReinstateMonica 的评论)是,1900-01-01 是 Excel 中的第 1 天,而不是第 0 天(您必须提供作为来源)。第 0 天是 1899 年 12 月 30 日;如果你想知道为什么不是 1899-12-31,解释很有趣,你可以找到更多 info here .

关于python - 如何将 float64 值转换为其等效的日期时间格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64064572/

相关文章:

python - 我正在尝试根据修改日期对文件夹中所有文件的列表进行排序

python - 找到预期结果时是否可以从 lambda 中断

Python:使用 smtplib 获取 Gmail 服务器永无止境

python - 将默认值添加到数据框

python - 对数据框列进行排序/对齐,以便行字符串值与主列表列匹配,如果列中不匹配则打印 0

java - 如何在 Java 8 中自动本地化日期格式

python - 为什么在虚拟环境中调试 Python C 扩展时 Xcode 5 会崩溃?

python - 使用 pandas 的 if 语句抛出 "ValueError: The truth value of a Series is ambiguous"

python - pytz 和 'America/Chicago' 的感知日期时间错误

c# - 两个日期之间的天数差异