如何移除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
相关产品推荐
相关产品推荐

