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

PyCharm下用Pandas清理列:提取时间并填充平均时间

处理Pandas混合类型列的时间提取与空值填充

直接上解决方案,分步骤落地:

1. 先明确数据场景

假设目标列名为target_col,先模拟一组和你描述一致的混合数据用于测试:

import pandas as pd

# 模拟数据:包含日期、时间、字符串、浮点数
df = pd.DataFrame({
    'target_col': ['2024-05-20', '10:25:30', 'XYZ789', '3.14', '16:40:00', '2024-06-15', '08:10:15']
})

2. 提取有效时间,标记无效值为NaN

用正则匹配标准时间格式(HH:MM或HH:MM:SS),只保留符合格式的内容,其余全部设为空值:

# 正则匹配时间格式,括号用于捕获匹配到的有效时间
time_regex = r'^\d{2}:\d{2}(:\d{2})?$'
df['clean_time'] = df['target_col'].str.extract(f'({time_regex})', expand=False)

这一步会自动把纯日期、字母、数字等非时间内容转为NaN,刚好满足你“原日期所在单元格设为空值”的需求。

3. 计算有效时间的平均值

时间类型无法直接求平均,需先转成秒数计算,再转回时间格式:

# 将字符串时间转为datetime类型,无效值自动转为NaT
df['time_dt'] = pd.to_datetime(df['clean_time'], format='%H:%M:%S', errors='coerce')

# 提取有效时间的总秒数,计算平均值
valid_seconds = df['time_dt'].dt.total_seconds().dropna()
avg_total_seconds = valid_seconds.mean()

# 把平均秒数转回HH:MM:SS格式
avg_time = pd.to_datetime(avg_total_seconds, unit='s').strftime('%H:%M:%S')

4. 用平均时间填充空值

直接用fillna替换空值:

df['clean_time'] = df['clean_time'].fillna(avg_time)

完整可运行代码

import pandas as pd

# 替换为你的实际数据加载方式
# df = pd.read_excel('your_data.xlsx')
# df = pd.read_csv('your_data.csv')

# 模拟混合类型数据
df = pd.DataFrame({
    'target_col': ['2024-05-20', '10:25:30', 'XYZ789', '3.14', '16:40:00', '2024-06-15', '08:10:15']
})

# 提取有效时间
time_regex = r'^\d{2}:\d{2}(:\d{2})?$'
df['clean_time'] = df['target_col'].str.extract(f'({time_regex})', expand=False)

# 计算平均时间
df['time_dt'] = pd.to_datetime(df['clean_time'], format='%H:%M:%S', errors='coerce')
valid_seconds = df['time_dt'].dt.total_seconds().dropna()
avg_total_seconds = valid_seconds.mean()
avg_time = pd.to_datetime(avg_total_seconds, unit='s').strftime('%H:%M:%S')

# 填充空值
df['clean_time'] = df['clean_time'].fillna(avg_time)

# 查看处理结果
print(df[['target_col', 'clean_time']])

额外提示

  • 如果你的时间带AM/PM格式,需要调整正则和转换格式:正则改成r'^\d{1,2}:\d{2}(:\d{2})?\s*(AM|PM)$',转换时用format='%I:%M:%S %p'。
  • 若不需要中间列time_dt,可以把计算逻辑合并,减少内存占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:11:27