Pandas如何批量将datetime64[ns]列转换为datetime64[ns, UTC]类型
报错原因
你遇到的报错:
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing
是因为 pd.to_datetime 传入多列DataFrame时,默认会将不同列识别为「年、月、日、时、分、秒」等时间组件进行拼接,而不是逐列单独转换每一列的时间值,和你的预期行为不符。
解决方案
你已经提前筛选出了所有datetime64[ns]类型的列,有两种可行的批量转换方案:
- 方案1:使用
apply逐列调用pd.to_datetime,通用性更强,就算后续列类型换成可解析的时间字符串也可以直接复用
query_df[dt_columns] = query_df[dt_columns].apply(lambda col: pd.to_datetime(col, utc=True))
- 方案2:使用
tz_localize直接为无时区的原生时间列添加UTC时区,不需要重复解析时间,性能更高
query_df[dt_columns] = query_df[dt_columns].apply(lambda col: col.dt.tz_localize("UTC"))
内容的提问来源于stack exchange,提问作者user6308605
相关产品推荐
相关产品推荐

