使用Python循环计算谷歌员工跨公司对接的平均响应时间差
实现代码
import pandas as pd # 初始化原始数据 data = {'timestamp': ['Friday, October 15, 2021 3:40 PM', 'Oct 15, 2021 03:06:29 PM', 'Friday, October 15, 2021 2:28 PM', 'Oct 15, 2021 06:23:51 AM', 'Oct 15, 2021 04:19:07 AM', 'Oct 15, 2021 08:19:07 AM'], 'emailuser': ['michael@google.com', 'caron@yt.com', 'luke@yt.com', 'sav@google.com','sav@google.com', 'paul@yt.com'] } df = pd.DataFrame(data) # 转换时间列为datetime格式,兼容两种不同的时间写法 df['timestamp'] = pd.to_datetime(df['timestamp']) # 存储用户对应的时间,方便后续配对 user_time = {} for _, row in df.iterrows(): # 跳过caron的记录 if row['emailuser'] == 'caron@yt.com': continue user_time[row['emailuser']] = row['timestamp'] valid_deltas = [] # 按规则配对计算 # 第一组:michael和luke delta1 = user_time['michael@google.com'] - user_time['luke@yt.com'] if delta1.total_seconds() > 0: valid_deltas.append(delta1) # 第二组:sav和paul delta2 = user_time['sav@google.com'] - user_time['paul@yt.com'] if delta2.total_seconds() > 0: valid_deltas.append(delta2) # 计算平均值 if valid_deltas: avg_response = sum(valid_deltas, pd.Timedelta(0)) / len(valid_deltas) print(f"谷歌员工平均响应时长为:{avg_response}") # 如需换算为分钟可使用以下代码 # print(f"换算为分钟:{avg_response.total_seconds() / 60:.2f}分钟") else: print("无有效响应时长记录")
运行上述代码得到的有效时间差只有michael和luke的0 days 01:12:00,所以平均响应时长就是1小时12分钟。
逻辑说明
- 首先用
pd.to_datetime自动识别两种不同格式的时间字符串,统一转换为可计算的时间类型 - 循环遍历所有行,跳过caron的记录,把其他用户的时间存在字典里方便配对
- 按题目要求的配对关系计算时间差,仅保留正的时间差,自动过滤sav和paul的无效配对
- 最后对所有有效时间差求平均值即可
内容的提问来源于stack exchange,提问作者inic72
相关产品推荐
相关产品推荐

