将 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?
将 0 和 1 (float64) 转换为布尔值时将空值转换为 True [重复]