【问题标题】:Get timestamp from datetime field in pandas only for notnull values仅从 pandas 中的 datetime 字段获取非空值的时间戳
【发布时间】:2021-08-31 18:30:34
【问题描述】:

我正在尝试将时间组件与日期字段分开,如下所示,但收到错误“ValueError:NaTType 不支持时间戳”

np.where(df1['Date'].isnull(),' ', pd.to_datetime(df1['Date']).apply(lambda a: a.timestamp()))

可能是什么问题,请帮忙

【问题讨论】:

    标签: python pandas date timestamp


    【解决方案1】:

    您应该可以只使用.dt.date.dt.time 来提取日期和时间部分,它们可以自动为您处理空值:

    df = pd.DataFrame({'DateTime': ['2018-10-10 09:10:00', None]})
    df.DateTime = pd.to_datetime(df.DateTime)
    
    df['Date'] = df.DateTime.dt.date
    df['Time'] = df.DateTime.dt.time
    df
    #             DateTime        Date      Time
    #0 2018-10-10 09:10:00  2018-10-10  09:10:00
    #1                 NaT         NaT       NaT
    

    或者,如果您专门寻找时间戳,请将 null 检查移至 apply,因为 np.where 不会阻止 NaT 调用 .timestamp 方法,而是执行后过滤:

    df.DateTime.apply(lambda x: x.timestamp() if pd.notnull(x) else x)
    #0    1.53916e+09
    #1            NaT
    #Name: DateTime, dtype: object
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 2019-06-28
      • 2021-08-06
      相关资源
      最近更新 更多