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

如何确保Pandas识别日期列及分组后仍保留日期类型

解决方法

问题出在df["Date/Time"].dt.date返回的是Python原生的datetime.date对象,Pandas会将这类对象存储为object类型,而非专门的日期类型。以下几种方法可以创建Pandas可识别的日期列,且能正常用于groupby操作:

方法1:使用dt.floor('D')保留datetime64类型

该方法会将时间戳向下取整到当天的起始时刻(00:00:00),结果仍为datetime64[ns]类型,完全兼容后续的分组操作:

df["Day"] = df["Date/Time"].dt.floor('D')

方法2:使用dt.normalize()(与floor('D')等效)

此方法会将时间部分重置为午夜,同样保持datetime64类型:

df["Day"] = df["Date/Time"].dt.normalize()

方法3:转换为日期专用的datetime64[D]类型

如果需要纯日期(不含时间)的类型,可以直接转换为datetime64[D]:

df["Day"] = df["Date/Time"].astype('datetime64[D]')

方法4:将已生成的object类型列转为日期类型

如果已经用dt.date生成了object类型的Day列,可通过以下代码转换为datetime类型:

df["Day"] = pd.to_datetime(df["Day"])

分组操作示例

使用上述方法生成的Day列进行分组后,结果中的日期列仍会被Pandas识别为日期类型:

# 按Day分组并计算总和
grouped_result = df.groupby("Day").sum()
# 查看分组后的索引类型(应为datetime64)
print(grouped_result.index.dtype)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:30:52