You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas时间校验与列更新报错:datetime.time与str无法比较

Pandas时间校验更新列的错误修复

问题代码

用户编写的时间校验及列更新代码:

df['r_time'] = pd.DatetimeIndex(df['createTimestamp']).time
df1 = df[df['Region'].str.contains('to be updated')]

for ind in df1.index:
    if df1['r_time'] < '8:00:00':
        df1['Region'] = 'Americas'

触发错误

TypeError: '<' not supported between instances of 'datetime.time' and 'str'

错误原因

df['r_time']是datetime.time类型,而'8:00:00'是字符串类型,两者无法直接用<运算符进行比较。

修复方案

  1. 将字符串时间转换为datetime.time类型,保证比较双方类型一致
  2. 改用Pandas矢量化操作替代循环,提升效率并避免潜在的SettingWithCopyWarning

修复后的代码:

import pandas as pd
from datetime import time

# 从时间戳列提取time类型的时间列
df['r_time'] = pd.DatetimeIndex(df['createTimestamp']).time

# 创建标准的time对象作为比较基准
target_time = time(8, 0, 0)

# 生成布尔掩码,筛选需要更新的行
update_mask = df['Region'].str.contains('to be updated') & (df['r_time'] < target_time)

# 批量更新指定列
df.loc[update_mask, 'Region'] = 'Americas'

补充说明

如果需要单独处理筛选后的子集,需注意创建副本避免警告,示例:

# 创建筛选子集的副本
df1 = df[df['Region'].str.contains('to be updated')].copy()
# 对子集进行更新
df1.loc[df1['r_time'] < target_time, 'Region'] = 'Americas'
# 若需同步回原DataFrame,使用update方法
df.update(df1)

内容的提问来源于stack exchange,提问作者Jagdish BR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:15:55