使用Year、Month等列创建DateTime列仅显示日期无时分如何解决
问题产生原因
- 绝大多数情况是pandas的默认显示设置做了截断:只要DateTime列的存储类型是
datetime64[ns],时分秒信息实际就完整保存在数据中,只是打印输出时为了排版简洁没有展示。 - 小概率是你使用的pandas版本过旧,直接传入多列转换时无法正确识别
Hour/Minute列,仅解析到日期维度。 - 极少数情况是原始的时间列存在脏数据(比如非数值、缺失值、非法取值),导致转换时分时出错被自动忽略。
解决步骤
- 首先验证数据实际存储情况,运行以下代码查看类型:
print(df["DateTime"].dtype)
如果输出为datetime64[ns],说明数据本身没有问题,仅需修改pandas全局显示配置即可看到完整时间:
# 全局设置datetime列的显示格式 pd.set_option('display.datetime_format', '%Y-%m-%d %H:%M:%S')
- 如果数据类型不是
datetime64[ns],或者修改显示配置后依然没有时分信息,换更稳妥的转换方式:
# 用字典映射时间参数的方式转换,兼容性最好 df["DateTime"] = pd.to_datetime({ "year": df["Year"], "month": df["Month"], "day": df["Day"], "hour": df["Hour"], "minute": df["Minute"] })
- 若以上操作依然无效,先校验原始列的数据合法性:
# 检查所有时间列是否为整数类型 print(df[["Year","Month","Day","Hour","Minute"]].dtypes) # 转换为整数类型 df[["Year","Month","Day","Hour","Minute"]] = df[["Year","Month","Day","Hour","Minute"]].astype(int)
内容的提问来源于stack exchange,提问作者Fluxy
相关产品推荐
相关产品推荐

