Pandas按datetime排序异常:仅按日期排序未按时分秒排序
解决Pandas DataFrame按datetime列排序时分秒异常的问题
排查步骤与解决方案:
确认排序结果是否生效
df.sort_values(by='dttime')默认返回一个新的排序后DataFrame,不会修改原数据。你需要要么重新赋值给原变量,要么启用原地修改:# 方式1:重新赋值保存排序结果 df = df.sort_values(by='dttime') # 方式2:原地修改并重置索引 df.sort_values(by='dttime', inplace=True, ignore_index=True)验证datetime列的解析正确性
检查dttime列是否真的正确解析了时分秒信息,避免格式参数错误导致的解析偏差:# 查看转换后的时间详情 print(df['dttime'].head()) # 对比原始整数与转换后的时间字符串 df['raw_dttime_str'] = df['dttime'].dt.strftime('%y%m%d%H%M%S') print(df[['raw_dttime_str', 'dttime']].head())注意:如果原始时间戳的年份是四位格式(如
20231005123456),需将转换格式改为%Y%m%d%H%M%S(大写Y),否则年份会被错误解析。检查无效时间值
若原始整数的时分秒部分超出合理范围(如小时=25、分钟=61),Pandas会将其解析为NaT(无效时间),这类值会集中排在排序结果的首尾。可通过以下代码排查:# 筛选出无效时间行 invalid_rows = df[df['dttime'].isna()] print(invalid_rows)
内容的提问来源于stack exchange,提问作者Eri
相关产品推荐
相关产品推荐

