Python使用pandas将Y-m-d H:M:S格式时间转换为int64整数
pandas将object类型时间列转为指定格式int64的实现方法
方案1:先转datetime类型(推荐,更稳妥)
先将object类型的时间列解析为pandas datetime格式,校验合法性后再格式化转整数,代码如下:
# 转换为datetime格式,format参数指定输入格式提升解析效率,errors='coerce'可将非法时间转为空值 data_A['time'] = pd.to_datetime(data_A['time'], format='%Y-%m-%d %H:%M:%S', errors='coerce') # 格式化为YYYYMMDDHHMMSS字符串后转int64,可根据需求替换列名覆盖原time列 data_A['time_int'] = data_A['time'].dt.strftime('%Y%m%d%H%M%S').astype('int64')
适用场景:数据时间格式不统一、存在异常值的场景,自动校验格式避免转换错误。
方案2:直接字符串替换(高效)
如果确认所有时间值都严格遵循Y-m-d H:M:S格式,可直接删除分隔符后转整数,执行效率更高:
# 依次删除横杠、冒号、空格后转换为int64类型 data_A['time_int'] = data_A['time'].str.replace('-', '', regex=False)\ .str.replace(':', '', regex=False)\ .str.replace(' ', '', regex=False)\ .astype('int64')
适用场景:数据质量可控、数据集规模较大的场景。
注意事项
- 若时间列存在空值,转换前可先通过
data_A['time'].dropna()删除空值,或使用.fillna('0')填充空值避免转换报错 - 若需要直接覆盖原
time列,将代码中的time_int替换为time即可
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

