Python计算pandas两列时间差时如何忽略非时间字符串无效值
解决方法
你原先的代码报错的核心原因是Complete列混杂了非时间字符串,列类型为通用object类型,无法直接进行时间减法运算,统一转datetime类型后就能正常运算。
首先用pd.to_datetime()的errors='coerce'参数处理时间列,将无法解析为时间的无效值(比如你的'open')自动转为空时间值NaT,pandas做时间运算时会自动跳过NaT所在行,不会报错:
- 第一步:统一转换两列为标准datetime类型
import pandas as pd # 转换时自动把无效值转为NaT df['Create'] = pd.to_datetime(df['Create'], errors='coerce') df['Complete'] = pd.to_datetime(df['Complete'], errors='coerce')
- 第二步:计算时间差并转换为分钟单位
# 计算完的timedelta转总秒数后除以60得到分钟数 df['diff_mins'] = (df['Create'] - df['Complete']).dt.total_seconds() / 60
如果后续不需要保留无效行,运算完可以直接过滤掉diff_mins是空的行:
df = df.dropna(subset=['diff_mins'])
内容的提问来源于stack exchange,提问作者ad282189323213
相关产品推荐
相关产品推荐

