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

如何用Pandas处理CSV中不规则时间格式并生成事件时间

解决Pandas处理混杂时间格式并合并列的问题

嘿,这就帮你搞定这个时间数据处理的难题!咱们分两步走:先统一time列的格式,再合并三列生成完整的事件时间。

一、统一time列的格式

你的time列混杂了两种格式:带AM/PM的12小时制时间(如12:00:00 AM),以及日期格式(如1/1/1900)。咱们的目标是把它们统一成24小时制的HH:MM:SS格式,对于日期格式的条目,默认转成00:00:00(代表无具体时间的记录)。

方法1:矢量化操作(高效推荐)

避免循环,直接用Pandas的矢量化处理,速度更快:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_data.csv')

# 标记哪些条目是带AM/PM的时间格式
is_time_format = df['time'].str.contains('AM|PM', na=False)

# 处理时间格式条目:转成24小时制字符串
df.loc[is_time_format, 'cleaned_time'] = pd.to_datetime(
    df.loc[is_time_format, 'time'], 
    format='%I:%M:%S %p'
).dt.time.astype(str)

# 处理日期格式条目:转成00:00:00
df.loc[~is_time_format, 'cleaned_time'] = pd.to_datetime(
    df.loc[~is_time_format, 'time']
).dt.time.astype(str)

方法2:自定义函数(直观易懂)

如果你更喜欢清晰的逻辑,用apply调用自定义函数更直观:

def standardize_time(time_str):
    try:
        # 尝试解析12小时制时间,转成24小时制字符串
        return pd.to_datetime(time_str, format='%I:%M:%S %p').strftime('%H:%M:%S')
    except ValueError:
        # 解析失败则视为日期,转成00:00:00
        return pd.to_datetime(time_str).strftime('%H:%M:%S')

df['cleaned_time'] = df['time'].apply(standardize_time)

执行完后,cleaned_time列就统一成了标准的24小时制时间格式。

二、合并三列生成事件时间

根据你的需求,这里提供两种常见的合并逻辑,你可以根据实际场景选择:

场景1:事件时间 = kickoffDate + cleaned_time

如果cleaned_time是事件发生的具体时间,直接用kickoffDate作为日期基础合并:

# 合并日期和标准化后的时间,生成完整datetime
df['event_datetime'] = pd.to_datetime(df['kickoffDate'] + ' ' + df['cleaned_time'])

场景2:事件时间 = kickoffDate + kickoffTime(替换时间部分为cleaned_time)

如果kickoffTime是开球时间,而cleaned_time是事件实际发生的时间,替换开球时间的时间部分:

# 先合并kickoffDate和kickoffTime得到开球datetime
df['kickoff_datetime'] = pd.to_datetime(df['kickoffDate'] + ' ' + df['kickoffTime'])

# 替换时间部分,生成事件时间
df['event_datetime'] = pd.to_datetime(
    df['kickoff_datetime'].dt.date.astype(str) + ' ' + df['cleaned_time']
)

示例效果

假设你的输入数据是:

kickoffDatekickoffTimetime
8/6/201709:00:0012:00:00 AM
8/6/201709:00:009:04:00 PM
8/6/201709:00:001/1/1900

处理后event_datetime列会得到:

2017-08-06 00:00:00
2017-08-06 21:04:00
2017-08-06 00:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:26