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

使用pandas导入CSV时,如何让to_datetime仅保留日期而非时间?

日期格式问题解析与解决

为什么会显示带时间的ISO格式?

  • pandas的pd.to_datetime转换后生成的是datetime64[ns]类型,本身包含日期和时间信息(默认时间为00:00:00)。你看到的2017-12-29T00:00:00.000Z是ISO 8601标准的UTC时间格式,出现这种显示通常有两个原因:
    1. 从CSV导入数据时,pandas的显示配置或数据序列化方式触发了ISO格式输出(比如某些环境下默认用ISO格式展示datetime类型);
    2. 直接创建DataFrame时,pandas会自动省略全为0的时间部分,但导入CSV时的元数据处理逻辑不同,导致完整格式被展示。

另外注意你的示例里存在日期解析错误:02/01/18被解析成了2018-02-01,这是因为pd.to_datetime默认采用美式月/日/年解析顺序,而你的数据是日/月/年格式,必须指定dayfirst=True才能正确解析。

如何只显示日期部分?

根据需求选择以下方法:

1. 保留datetime类型,仅修改显示格式

如果还要用datetime类型做后续时间运算(比如排序、筛选、计算间隔),只改显示样式:

# 设置全局默认显示格式,所有datetime列都会按此展示
pd.options.display.date_format = '%Y-%m-%d'

# 或者临时查看时格式化单个列
print(df['date_f'].dt.strftime('%Y-%m-%d'))

2. 转换为字符串类型,永久保留日期文本

如果不需要datetime类型,直接转成纯日期字符串:

# 先正确解析日期,再转成字符串格式
df['date_f'] = pd.to_datetime(df['Date'], dayfirst=True).dt.strftime('%Y-%m-%d')

3. 导入CSV时直接处理(最推荐)

从源头解决,导入CSV时就指定日期格式和解析规则,避免后续麻烦:

# pandas 1.1.0+版本可以直接用format参数
df = pd.read_csv('your_file.csv', parse_dates=['Date'], format='%d/%m/%y')

# 旧版本可以用date_parser
from datetime import datetime
df = pd.read_csv('your_file.csv', parse_dates=['Date'], date_parser=lambda x: datetime.strptime(x, '%d/%m/%y'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:10:39