【问题标题】:Errors in converting float64 column to datetime pandas将 float64 列转换为 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)转换为整数

标签: python pandas


【解决方案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') 

【讨论】:

    猜你喜欢
    • 2015-01-02
    相关资源
    最近更新 更多