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

如何移除DataFrame日期列的时分秒?解决strptime参数报错

解决DataFrame日期列移除时分秒的问题

我来帮你搞定这个问题~你遇到的报错原因很明确:datetime.datetime.strptime()是Python标准库里用来处理单个字符串的函数,而你传入的df['Date']是一个pandas Series(整列数据),它自然没办法直接处理,所以才会抛出strptime() argument 1 must be str, not Series这个错误。

下面给你几个简单靠谱的解决方案,按需选择:

方法1:利用pandas的datetime处理(推荐)

pandas本身对日期时间处理有非常友好的支持,先把Date列转换成datetime类型,再提取日期部分就好:

import pandas as pd

# 第一步:将Date列转为pandas datetime类型(如果还没转换的话)
df['Date'] = pd.to_datetime(df['Date'])

# 第二步:提取纯日期部分,结果是YYYY-MM-DD格式的date对象
df['Date'] = df['Date'].dt.date

如果希望保留datetime64类型(只是把时分秒置为00:00:00),可以用normalize()或者floor()方法:

# 把时分秒统一转为00:00:00,仍为datetime64类型
df['Date'] = pd.to_datetime(df['Date']).dt.normalize()
# 或者用floor按天截断
df['Date'] = pd.to_datetime(df['Date']).dt.floor('D')

方法2:直接截取字符串(适合Date列已为字符串类型)

如果你的Date列本身就是字符串格式,也可以直接截取前10位字符(因为YYYY-MM-DD刚好是10个字符):

df['Date'] = df['Date'].str[:10]

验证结果

执行完上面任意一种方法后,打印df就能得到你想要的效果:

Date       Price
2018-01-02  2
2018-01-02  4
2018-01-02  6
...

小提示:优先用方法1,因为转换成datetime类型后,后续做日期筛选、分组、计算等操作会更方便,而字符串类型的日期在复杂操作中容易出问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:59:47