如何将Excel中object类型的时间列转换为datetime格式以合并列?
解决Object类型时间列转Datetime的问题
先排查数据格式问题
先查看目标列的样本数据和唯一值,确认时间格式是否统一、是否存在脏数据:# 替换成你的object类型列名,比如'time_column' target_col = 'time_column' # 查看10条样本数据 print(dataFrame[target_col].sample(10)) # 查看前20个唯一值,排查异常格式 print(dataFrame[target_col].unique()[:20])强制转换并定位错误数据
用pd.to_datetime加errors='coerce'参数,把无法转换的内容标记为NaT,再找出这些异常行:dataFrame[f'{target_col}_clean'] = pd.to_datetime(dataFrame[target_col], errors='coerce') # 输出转换失败的原数据 print(dataFrame[dataFrame[f'{target_col}_clean'].isna()][target_col])根据格式情况选择转换方式
- 明确时间格式时,指定
format参数(最稳定):# 示例:如果格式是"年-月-日 时:分:秒" dataFrame[target_col] = pd.to_datetime(dataFrame[target_col], format='%Y-%m-%d %H:%M:%S') - 格式不明确但整体统一时,开启自动推断:
dataFrame[target_col] = pd.to_datetime(dataFrame[target_col], infer_datetime_format=True, errors='coerce')
- 明确时间格式时,指定
处理脏数据
如果存在无法转换的非时间内容,可选择删除或手动修正:# 删除转换失败的行 dataFrame = dataFrame.dropna(subset=[f'{target_col}_clean']) # 或手动替换异常值 dataFrame[target_col] = dataFrame[target_col].replace('无效内容', '2024-01-01 00:00:00')合并Datetime列
转换完成后,若要合并两列datetime(比如日期列+时间列):# 假设日期列是'date_col',转换后的时间列是'target_col' dataFrame['full_datetime'] = pd.to_datetime( dataFrame['date_col'].dt.date.astype(str) + ' ' + dataFrame[target_col].dt.time.astype(str) )
内容的提问来源于stack exchange,提问作者haynick
相关产品推荐
相关产品推荐

