You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas仅提取非空datetime字段时间戳报NaTType不支持timestamp错误如何解决

错误原因
  • numpy的np.where函数的执行逻辑是先完整计算两个分支的所有表达式结果,再根据条件选择对应位置的返回值,不会因为你写了df1['Date'].isnull()的判断就跳过空值行的第二个分支计算
  • 你的第二个分支pd.to_datetime(df1['Date'])会把原本为空的日期值转换为NaT(pandas中时间类型的空值表示),后续调用timestamp()方法时,NaT不支持该方法,直接触发报错。
解决方案

方案1:使用pandas内置dt属性实现(最简洁)

pandas的时间序列dt访问器自带timestamp()方法,空值(NaT)处理后会自动返回NaN,直接调用fillna填充你要的空格即可,无需写条件判断和lambda:

pd.to_datetime(df1['Date']).dt.timestamp().fillna(' ')

方案2:修改lambda增加非空判断

如果需要保留你原来的逻辑结构,可在lambda中先判断值是否为时间空值再调用方法:

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

方案3:仅对非空行做处理后赋值

如果你想完全避免处理空值行,可以先筛选非空行计算时间戳,再给空值行填充空格:

# 初始化结果列为空格
df1['result'] = ' '
# 仅给非空日期行赋值时间戳
not_null_mask = df1['Date'].notnull()
df1.loc[not_null_mask, 'result'] = pd.to_datetime(df1.loc[not_null_mask, 'Date']).apply(lambda a: a.timestamp())

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 01:27:03