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

如何合并日期、开球时间与时长列生成事件时间列?

看起来你已经搞定了日期和开球时间的合并,接下来只需要把time列的时长加到合并后的时间上,再调整格式就能得到目标结果啦!我给你两种常用场景的解决方案:

用Pandas处理(推荐,适合表格数据)

如果你的数据是在Pandas DataFrame里,这是最便捷的方式:

import pandas as pd

# 先构造你的示例数据
data = {
    'kickoffDate': ['8/6/2017','8/6/2017','8/6/2017'],
    'kickoffTime': ['15:00:00','15:00:00','15:00:00'],
    'time': ['51:48:00','86:05:00','10:04']
}
df = pd.DataFrame(data)

# 1. 合并日期和开球时间为datetime对象
df['kickoff_datetime'] = pd.to_datetime(df['kickoffDate'] + ' ' + df['kickoffTime'], format='%m/%d/%Y %H:%M:%S')

# 2. 自定义函数解析time列,转成时间差(timedelta)
def parse_time_delta(time_str):
    parts = time_str.split(':')
    if len(parts) == 2:
        mins, secs = map(int, parts)
    elif len(parts) == 3:
        # 处理带多余秒位的情况,比如'51:48:00'
        mins, secs, _ = map(int, parts)
    else:
        raise ValueError(f"无法解析的时间格式: {time_str}")
    return pd.Timedelta(minutes=mins, seconds=secs)

df['time_delta'] = df['time'].apply(parse_time_delta)

# 3. 合并时间并格式化目标字符串
df['eventdatetime'] = (df['kickoff_datetime'] + df['time_delta']).dt.strftime('%d-%m-%Y %H:%M:%S')

# 查看结果
print(df['eventdatetime'].tolist())
# 输出: ['06-08-2017 15:51:48', '06-08-2017 16:26:05', '06-08-2017 15:10:04']

纯Python处理列表数据

如果只是处理原生列表,用datetime模块就能搞定:

from datetime import datetime, timedelta

kickoffDate = ['8/6/2017','8/6/2017','8/6/2017']
kickoffTime = ['15:00:00','15:00:00','15:00:00']
time_list = ['51:48:00','86:05:00','10:04']

eventdatetime = []

for date_str, kickoff_str, delta_str in zip(kickoffDate, kickoffTime, time_list):
    # 合并日期和开球时间
    kickoff_dt = datetime.strptime(f"{date_str} {kickoff_str}", "%m/%d/%Y %H:%M:%S")
    
    # 解析time列的时长
    parts = delta_str.split(':')
    if len(parts) == 2:
        mins, secs = map(int, parts)
    elif len(parts) == 3:
        mins, secs, _ = map(int, parts)
    else:
        raise ValueError(f"无法解析的时间格式: {delta_str}")
    
    # 计算最终时间并格式化
    final_dt = kickoff_dt + timedelta(minutes=mins, seconds=secs)
    eventdatetime.append(final_dt.strftime("%d-%m-%Y %H:%M:%S"))

print(eventdatetime)
# 输出: ['06-08-2017 15:51:48', '06-08-2017 16:26:05', '06-08-2017 15:10:04']

关键说明

  • 你的time列格式有点混合(有的带秒位后缀,有的没有),所以加了判断逻辑兼容两种格式;
  • 日期格式从MM/DD/YYYY转成了DD-MM-YYYY,是通过strftime的%d-%m-%Y参数实现的;
  • 时长超过60分钟的情况(比如86分钟)会自动转换成小时+分钟,datetime和timedelta会帮你处理进位,不用手动计算。

内容的提问来源于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 03:51:11