将 float64 列转换为 datetime pandas 时出错

Posted

技术标签:

【中文标题】将 float64 列转换为 datetime pandas 时出错【英文标题】:Errors in converting float64 column to datetime pandas 【发布时间】:2019-08-28 10:43:09 【问题描述】:

我需要将float64类型转换为日期时间格式。

以20181219.0数据为例,我想要的是2018-12-19

我试过通用代码;

df1['ACT_DATE1'] = pd.to_datetime(df1['ACT_DATE1'], format='%Y/%m/%d')

但是,我得到的是 1970-01-01 00:00:00.020181219

【问题讨论】:

pd.to_datetime(df1['ACT_DATE1'].astype(int).astype(str), format='%Y%m%d') ? ValueError: 无法将非有限值(NA 或 inf)转换为整数 【参考方案1】:

这里的第一个明显问题是一些缺失值,这些缺失值被转换为NaT 以表示缺失的日期时间。

在 pandas 0.25.0 中测试,.0 值没有问题,只需要指定日期时间的格式 - %Y%m%d

df1 = pd.DataFrame('ACT_DATE1' : [20181219.0, np.nan])

df1['ACT_DATE1'] = pd.to_datetime(df1['ACT_DATE1'], format='%Y%m%d') 
print (df1)
   ACT_DATE1
0 2018-12-19
1        NaT

如果不工作且有必要删除缺失值并转换为整数:

dates = df1['ACT_DATE1'].dropna().astype(int)
df1['ACT_DATE1'] = pd.to_datetime(dates, format='%Y%m%d') 

【讨论】:

以上是关于将 float64 列转换为 datetime pandas 时出错的主要内容,如果未能解决你的问题,请参考以下文章

将 pandas 列转换为 datetime64,包括缺失值

如何将包含 float 和 nan 值的 Dataframe 转换为 datetime python?

熊猫 datetime64 到字符串

将 0 和 1 (float64) 转换为布尔值时将空值转换为 True [重复]

在 pyspark 中的 datetime64 和 datetime 之间转换

pandas:将多列转换为字符串