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

如何从datetime列'ds'中移除时区且保留完整时间?

移除时区信息并保留日期时间的正确方法

原始ds列数据:

ds
2023-06-01 00:00:00+00:00
2023-06-01 01:00:00+00:00
2023-06-01 02:00:00+00:00
2023-06-01 03:00:00+00:00
2023-06-01 04:00:00+00:00

尝试过的错误方法

  • 字符串截取法
    代码:Usage_df_V2['ds'].astype(str).str[:-6]
    错误结果:所有行小时部分被错误修改为00:00:00

    2023-06-01 00:00:00
    2023-06-01 00:00:00
    2023-06-01 00:00:00
    2023-06-01 00:00:00
    2023-06-01 00:00:00
    
  • tz_convert法
    代码:Usage_df_V2['ds'].dt.tz_convert(None)
    错误结果:丢失时间部分,仅保留日期

    2023-06-01
    2023-06-01
    2023-06-01
    2023-06-01
    2023-06-01
    

正确解决方法

方案1:使用dt.tz_localize(None)

如果ds列是带时区的datetime类型(如datetime64[ns, UTC]),直接用该方法移除时区,同时完整保留日期和时间:

Usage_df_V2['ds'] = Usage_df_V2['ds'].dt.tz_localize(None)

执行后结果:

2023-06-01 00:00:00
2023-06-01 01:00:00
2023-06-01 02:00:00
2023-06-01 03:00:00
2023-06-01 04:00:00

方案2:格式化输出字符串

通过指定格式将datetime转为字符串,自动剔除时区信息:

Usage_df_V2['ds'] = Usage_df_V2['ds'].dt.strftime('%Y-%m-%d %H:%M:%S')

此方法适用于需要将结果保留为字符串类型的场景。

错误原因说明

  • 字符串截取失败:大概率是因为转字符串后的格式不统一,导致切片位置错误,误删了时间部分。
  • tz_convert(None)失败:tz_convert用于时区转换,若数据是已本地化的datetime,应使用tz_localize(None);出现日期截断可能是数据类型异常(如误转为date类型而非datetime)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:05:27