【问题标题】:Null Value in Date field of Data Frame, how to skip it to format as date数据框日期字段中的空值,如何跳过它以格式化为日期
【发布时间】:2019-07-25 02:32:00
【问题描述】:

我有一个包含日期字段的 DataFrame,其中一些包含 None 值。

我正在使用下面的方法将所有以毫秒为单位的日期更改为 ddmmyyyy,但当值为 None 时会遇到问题

 dataframe['dt'] =dataframe['dt']/1000.0
        dataframe['dt']=datetime.datetime.fromtimestamp(dataframe['dt']).strftime('%d/%m/%Y')

试图忽略下面的 None 值,但它没有执行条件并直接转到 else

 dataframe['dt']=np.where(dataframe['dt']==pd.np.nan, pd.np.nan,dataframe['dt']/1000)
        dataframe['dt']=np.where(dataframe['dt']==pd.np.nan, pd.np.nan, datetime.datetime.fromtimestamp(dataframe['dt']).strftime('%d/%m/%Y'))

现在越来越累了

【问题讨论】:

    标签: python pandas numpy datetime null


    【解决方案1】:

    你试过了吗:

    pd.to_datetime(dataframe['dt'], unit='ms', format='%d%m%Y', errors='coerce')
    

    【讨论】:

      【解决方案2】:

      你可以试试apply:

      import datetime
      import numpy as np
      df=pd.DataFrame({'dt':[1564025326921, 1564025327921, None, 1564025328921]})
      df['dt'] =df['dt']/1000.0
      df['dt']= df['dt'].apply(lambda t: None if np.isnan(t) else datetime.datetime.fromtimestamp(t).strftime('%d/%m/%Y'))
      df.head(10)
      

      这将输出:

          dt
      0   24/07/2019
      1   24/07/2019
      2   None
      3   24/07/2019
      

      【讨论】:

        【解决方案3】:

        您可以使用 pandas pd.to_datetime 中的内置方法将值转换为 DateTime 对象。转换为 Datetime 后,您可以更灵活地更改格式。 如果要将列“日期”转换为日期时间对象,可以按如下方式进行 df['date']= pd.to_datetime(df['date'],format='%d/%m/%y', errors='coerce')

        errors='coerce 会将不可兑换物品设为 NaT

        【讨论】:

          猜你喜欢
          • 2012-03-31
          • 1970-01-01
          • 1970-01-01
          • 2021-11-25
          • 2022-01-12
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          • 2020-08-12
          相关资源
          最近更新 更多