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

如何从datetime64[ns]格式的df['A']列提取日期?已尝试datetime.strftime

嘿,我来帮你搞定这个问题!你之前用datetime.strftime(df.A, '%y%m%d')没成功,是因为strftime是单个datetime对象的方法,而你的df['A']是Pandas Series,得用.dt访问器来调用Series里每个元素的datetime方法~

解决方案

首先明确你的需求:是要把列转成日期格式的字符串(比如"2002-01-03"),还是保留日期类型(方便后续做日期运算)?两种情况的处理方法如下:

1. 转成YYYY-MM-DD格式的字符串

如果你需要的是和示例完全一致的字符串格式,用Pandas的.dt.strftime()方法:

import pandas as pd

# 对Series中的每个datetime元素调用strftime
df['A'] = df['A'].dt.strftime('%Y-%m-%d')

⚠️ 注意:你之前用的%y是两位数年份(比如02),而%Y才是四位数年份(比如2002),这也是之前结果不符合预期的原因之一。执行后df['A']会变成字符串类型(object dtype)。

2. 保留日期类型(推荐用于后续日期操作)

如果你之后还要对这列做日期计算(比如加减天数、按日期分组),推荐保留日期类型,有两种常用方式:

方法一:转成Python原生date对象

df['A'] = df['A'].dt.date

执行后df['A']的元素是datetime.date类型,显示时就是2002-01-03这样的格式。

方法二:保留datetime64类型但仅保留日期部分

把时间部分自动设为00:00:00,在DataFrame中显示时通常只展示日期,且能继续使用Pandas的日期函数:

# 方式1:按天取整
df['A'] = df['A'].dt.floor('D')

# 方式2:将时间归一化为午夜
df['A'] = df['A'].dt.normalize()

验证结果

执行任意一种方法后,打印df['A']就能得到你想要的结果:

0    2002-01-03
1    2002-01-04
2    2002-01-05
Name: A, dtype: object  # 或datetime64[ns],取决于你用的方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:14:08