如何将Pandas读取SAS7BDAT得到的秒数转为HH:MM:SS格式时间
将SAS时间数值转换为HH:MM:SS格式
你看到的28200.0是SAS时间值的底层存储形式——以秒为单位的整数(7小时50分钟换算成秒就是7×3600+50×60=28200)。下面是两种简单的转换方法:
方法1:用Pandas内置的时间工具
先把数值转为timedelta类型,再格式化为字符串:
# 转换为timedelta类型 df['time_col'] = pd.to_timedelta(df['time_col'], unit='s') # 格式化为HH:MM:SS字符串 df['time_hhmmss'] = df['time_col'].dt.strftime('%H:%M:%S')
方法2:自定义函数处理
如果需要更灵活的控制(比如处理空值),可以写一个简单的转换函数:
import pandas as pd def convert_sec_to_hhmmss(seconds): if pd.isna(seconds): return None # 处理空值,可替换为你需要的占位符 hours = int(seconds // 3600) minutes = int((seconds % 3600) // 60) secs = int(seconds % 60) # 格式化补零,确保时间以两位数显示 return f"{hours:02d}:{minutes:02d}:{secs:02d}" # 应用到目标列 df['time_hhmmss'] = df['time_col'].apply(convert_sec_to_hhmmss)
两种方法都能把28200.0转换成07:50:00格式的时间字符串。
内容的提问来源于stack exchange,提问作者HnV
相关产品推荐
相关产品推荐

