如何在Power BI中计算指定操作间的平均周期时间
计算同团队同ID操作平均耗时方案
核心逻辑
- 先转换日期格式:把原始
%d/%m/%y格式的日期字符串转成可计算的日期时间类型,避免格式错误 - 按
id+team分组匹配:仅同一个id、同一个团队下的操作记录纳入计算,排除跨id、跨团队的无效匹配 - 筛选指定操作:根据你输入的起始操作、结束操作,对每个id分别提取对应操作的日期,默认取每个id下最早的起始操作和最早的结束操作匹配,有其他匹配需求可以自行调整逻辑
- 计算平均时长:先算每个有效id的两个操作的天数差,再对所有差值取平均即可
代码实现(Python Pandas)
下面的代码支持灵活调整筛选的团队、起始操作、结束操作,适配你的需求:
import pandas as pd # 读取原始数据,这里适配你给出的多空格分隔格式 df = pd.read_csv("你的数据文件路径", sep="\s+") # 转换日期格式为可计算类型 df['date'] = pd.to_datetime(df['date'], format="%d/%m/%y") # 筛选参数,可按需修改 target_team = "A" start_operation = "A" end_operation = "C" # 筛选目标团队的数据 team_data = df[df["team"] == target_team] # 提取每个id的最早起始操作日期 start_dates = team_data[team_data["operation"] == start_operation]\ .groupby("id")["date"].min().reset_index(name="start_date") # 提取每个id的最早结束操作日期 end_dates = team_data[team_data["operation"] == end_operation]\ .groupby("id")["date"].min().reset_index(name="end_date") # 合并数据,仅保留同时有两个操作的有效id valid_data = pd.merge(start_dates, end_dates, on="id", how="inner") # 计算单id耗时 valid_data["diff_days"] = (valid_data["end_date"] - valid_data["start_date"]).dt.days # 计算平均耗时 avg_cost = valid_data["diff_days"].mean() print(f"平均耗时:{avg_cost}天")
示例场景计算结果
按照你给出的示例(A团队操作A到操作C的平均耗时),运行代码可得结果为1天:
- id 333:A操作日期2021-08-13,C操作日期2021-08-14,差值1天
- id 454:A操作日期2021-08-12,C操作日期2021-08-13,差值1天
- 两个有效样本的平均耗时为1天
内容的提问来源于stack exchange,提问作者andr2
相关产品推荐
相关产品推荐

