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

关于pd.to_datetime直接转换DataFrame日期列的两类疑问

pd.to_datetime批量转换DataFrame日期列问题解析

问题描述

单独将DataFrame中的日期列转为datetime64[ns]类型时一切正常,但直接对多列执行pd.to_datetime转换时触发错误:

报错代码

df[['Date Range','ME Created Date/Time','Ready For Books Date/Time']]=pd.to_datetime(df[['Date Range','ME Created Date/Time','Ready For Books Date/Time']],format='%d-%m-%Y %H:%M:%S')

错误提示

to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing

数据样例

Date RangeME Created Date/TimeReady For Books Date/Time
11-05-2022 00:00:0002-05-2022 14:31:3711-05-2022 00:00:00
10-09-2022 00:00:0006-09-2022 14:19:0310-09-2022 00:00:00
10-09-2022 00:00:0006-09-2022 14:19:0310-09-2022 00:00:00
10-09-2022 00:00:0006-09-2022 14:19:0310-09-2022 00:00:00
10-09-2022 00:00:0006-09-2022 14:19:0310-09-2022 00:00:00

当前可行方案

已通过apply方法实现多列转换,代码如下:

df[['Date Range','ME Created Date/Time','Ready For Books Date/Time']] = df[['Date Range','ME Created Date/Time','Ready For Books Date/Time']].apply(pd.to_datetime, format='%d-%m-%Y %H:%M:%S')

疑问与解答

1. 能否不借助apply直接用pd.to_datetime转换多列?

可以。问题根源在于:当直接向pd.to_datetime传入多列DataFrame时,它会默认将每一列视为年、月、日的单独字段,而非完整的日期字符串。解决思路是先把多列转为单列Series(通过stack),转换后再转回多列(通过unstack):

# 指定需要转换的列
target_cols = ['Date Range','ME Created Date/Time','Ready For Books Date/Time']
# stack将列转成行,得到单列日期字符串,用pd.to_datetime转换后unstack还原结构
df[target_cols] = pd.to_datetime(df[target_cols].stack(), format='%d-%m-%Y %H:%M:%S').unstack()

2. 能否不用.dt.date返回仅含日期的结果?

可以。.dt.date返回的是Python原生date对象,若想保留pandas的datetime64类型且仅显示日期部分,可使用dt.normalize()或dt.floor('D'),它们会将时间部分统一设置为00:00:00,视觉上等价于仅日期,且更适合后续pandas操作:

target_cols = ['Date Range','ME Created Date/Time','Ready For Books Date/Time']
# 转换后统一去除时间部分
df[target_cols] = pd.to_datetime(df[target_cols].stack(), format='%d-%m-%Y %H:%M:%S').dt.normalize().unstack()

如果需要直接转换为仅日期字符串,也可以在转换时截取日期部分:

df[target_cols] = pd.to_datetime(df[target_cols].stack().str.split(' ').str[0], format='%d-%m-%Y').unstack()

内容的提问来源于stack exchange,提问作者Rajib Lochan Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:31:45