Pandas生成星期列报错:仅能对类日期值使用.dt访问器
问题解决:基于日期生成星期列报错处理
问题原因
你执行df['Date'] = pd.to_datetime(df['Date_Time']).dt.date后,Date列的类型是Python原生的date对象,而非pandas的datetime64类型。pandas的.dt访问器仅支持datetime64这类datetimelike数据,因此会抛出Can only use .dt accessor with datetimelike values错误。
解决方案
方案1:直接基于原Date_Time列生成星期(推荐)
无需拆分单独的Date列,直接处理转换后的Date_Time列即可:
# 确保Date_Time是datetime类型(如果尚未转换) df['Date_Time'] = pd.to_datetime(df['Date_Time']) # 生成星期索引(0=周一,6=周日) df['Weekdays'] = df['Date_Time'].dt.dayofweek # 可选:生成星期名称(如"Monday") df['Weekday_Name'] = df['Date_Time'].dt.day_name()
方案2:保留Date列并转换为datetime类型
如果需要保留单独的日期列,需将其转为pandas的datetime64类型,而非Python原生date对象:
# 生成datetime类型的Date列(仅保留日期部分) df['Date'] = pd.to_datetime(df['Date_Time']).dt.floor('D') # 现在可以正常使用.dt访问器 df['Weekdays'] = df['Date'].dt.dayofweek
内容的提问来源于stack exchange,提问作者Mohammad.sh
相关产品推荐
相关产品推荐

