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

如何在Python Pandas中将含日期时间与NaN的Object列转为datetime64日期列

在Pandas中将带时区的字符串日期转换为仅保留日期的datetime64类型

实现步骤

  1. 解析字符串为datetime类型:用pd.to_datetime()处理COL2列,通过errors='coerce'自动兼容NaN和无效格式,得到带时区的datetime对象(原NaN值转为Pandas的缺失datetime标识NaT)。
  2. 保留日期部分并维持datetime64类型:用dt.normalize()或dt.floor('D')将时间部分置为当日午夜,既保留datetime64类型,又仅展示日期信息。

完整代码示例

import pandas as pd

# 模拟你的DataFrame(包含更多列时直接替换为你的实际DataFrame即可)
df = pd.DataFrame({
    'COL1': ['abc', 'ddd', 'bbb'],
    'COL2': ['2019-11-12T20:15:08+030', '2019-12-01T22:14:11+030', pd.NA],
    'OTHER_COL': [1, 2, 3]  # 示例其他列
})

# 第一步:转换COL2为datetime类型,自动处理缺失/无效值
df['COL2'] = pd.to_datetime(df['COL2'], errors='coerce')

# 第二步:提取日期部分(两种方法二选一)
df['COL2'] = df['COL2'].dt.normalize()  # 将时间重置为当日午夜
# df['COL2'] = df['COL2'].dt.floor('D')  # 向下取整到天,效果与normalize一致

# 查看结果
print(df)

关键说明

  • 转换后COL2的类型为datetime64[ns],符合需求;原NaN值在显示时仍为NaN。
  • 若需移除时区信息,可在转换后追加.dt.tz_localize(None):
    df['COL2'] = pd.to_datetime(df['COL2'], errors='coerce').dt.tz_localize(None).dt.normalize()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:01:05