Pandas将可转时间戳的object列转为UTC时间戳并忽略不可转换列
实现代码
import pandas as pd # 构造示例数据集 data = {'timestamp_1': ['36:00.0', '46:44.0', '20:59.0', '57:27.0', '51:18.0'], 'r1': [-1, 6, 10, 0, 0], 'timestamp': ['18-06-2020 09:36:00', '19-06-2020 09:36:00', '20-06-2020 09:36:00', '21-06-2020 09:36:00', '22-06-2020 09:36:00'] } df = pd.DataFrame(data=data) # 批量转换符合要求的列 for col in df.select_dtypes(include='object').columns: # 尝试解析为UTC时间,无法解析的内容标记为空时间NaT temp_col = pd.to_datetime(df[col], utc=True, errors='coerce') # 只要列内存在可解析的有效时间,就用转换后的结果替换原列,否则保留原列 if temp_col.notna().any(): df[col] = temp_col
逻辑说明
- 仅筛选
object类型列做转换,不处理数值、布尔等其他类型的列,减少不必要的计算 pd.to_datetime传入utc=True参数,所有解析成功的时间会直接转为UTC标准时区的时间戳格式- 传入
errors='coerce'时,单条数据解析失败不会中断整体流程,只会把该条值标记为空时间NaT - 转换后校验列内是否存在有效时间值,整列都无法解析为时间的列会被直接保留,不会做替换
内容的提问来源于stack exchange,提问作者n3a5p7s9t1e3r
相关产品推荐
相关产品推荐

