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

如何移除df中日期的时分秒,仅提取并保留年和月?

日期字段示例

解决方案

以下是pandas DataFrame场景下的可行实现方案,按需选择即可:

  • 首先统一预处理:先将日期列转为标准datetime类型,避免原始列为字符串类型导致操作失效
import pandas as pd
# 转换日期列格式,errors='coerce'会把无法解析的异常日期转为空值NaT
df['your_date_col'] = pd.to_datetime(df['your_date_col'], errors='coerce')
  • 方案1:输出字符串格式的年月(格式为YYYY-MM,适合导出、展示场景)
df['year_month'] = df['your_date_col'].dt.strftime('%Y-%m')
# 如果需要直接覆盖原日期列,把'year_month'替换为原列名即可
  • 方案2:输出Period时间类型的年月(适合后续做时间序列计算、分组聚合场景)
df['year_month'] = df['your_date_col'].dt.to_period('M')
  • 方案3:仅调整显示效果,不修改原始数据类型
    如果不需要修改存储的数据,只需要在打印df的时候隐藏时分秒,可以修改pandas全局显示配置:
pd.set_option('display.datetime_format', '%Y-%m')
  • 特殊场景方案:如果你的日期列是字符串格式且不想转datetime,且固定为YYYY-MM-DD HH:MM:SS的格式,可以直接切割字符串取前7位:
df['year_month'] = df['your_date_col'].str[:7]

常见失效原因排查

  • 执行dt相关方法时报错:基本都是因为日期列是object字符串类型,必须先执行pd.to_datetime转换后再操作
  • 转换后还是显示时分秒:检查是否是用了strftime方法后又被自动转成了datetime类型,确认输出列的dtype符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:02