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

基于Age区间计算下一次Breaking变更的time_diff_new平均时长

基于Age区间计算到下一次Breaking的平均天数

实现步骤

  1. 数据预处理:将字符串类型的'Nan'替换为真实的NaN,便于后续逻辑判断;
  2. 划分Age区间:根据业务需求定义Age的分组区间,用pd.cut生成区间标签;
  3. 获取下一次Breaking的时间:利用反向填充(bfill)为每条记录匹配后续最近的Breaking事件时间;
  4. 计算天数差并过滤有效数据:仅保留非Breaking且存在后续Breaking事件的记录,计算当前时间到下一次Breaking的天数差;
  5. 分组求平均:按Age区间分组,计算每个区间内的平均等待天数。

完整代码实现

import pandas as pd
import numpy as np

# 1. 构建并预处理原始DataFrame
data = [{'Year': 2019, 'time_diff_new': 0, 'type1': 'Nan', 'Age': 861},
        {'Year': 2019, 'time_diff_new': 100, 'type1': 'Nan', 'Age': 861},
        {'Year': 2019, 'time_diff_new': 105, 'type1': 'Nan', 'Age': 861},
        {'Year': 2019, 'time_diff_new': 113, 'type1': 'Breaking', 'Age': 861},
        {'Year': 2019, 'time_diff_new': 127, 'type1': 'Breaking', 'Age': 861},
        {'Year': 2020, 'time_diff_new': 299, 'type1': 'Breaking', 'Age': 861},
        {'Year': 2020, 'time_diff_new': 462, 'type1': 'Nan', 'Age': 861},
        {'Year': 2021, 'time_diff_new': 601, 'type1': 'Breaking', 'Age': 861},
        {'Year': 2021, 'time_diff_new': 605, 'type1': 'Nan', 'Age': 861},
        {'Year': 2021, 'time_diff_new': 771, 'type1': 'Breaking', 'Age': 861},
        {'Year': 2021, 'time_diff_new': 855, 'type1': 'Nan', 'Age': 861},
        {'Year': 2021, 'time_diff_new': 861, 'type1': 'Nan', 'Age': 861}]

df = pd.DataFrame(data)
df['type1'] = df['type1'].replace('Nan', np.nan)

# 2. 定义Age区间(可根据业务需求修改)
age_bins = [800, 850, 900]
age_labels = ['800-849', '850-899']
df['Age_Interval'] = pd.cut(df['Age'], bins=age_bins, labels=age_labels, right=False)

# 3. 获取每条记录后续最近的Breaking时间
df['next_breaking_time'] = df.loc[df['type1'] == 'Breaking', 'time_diff_new'].bfill()

# 4. 计算天数差并过滤有效数据
df['days_to_next_breaking'] = df['next_breaking_time'] - df['time_diff_new']
valid_df = df[(df['type1'] != 'Breaking') & (~df['next_breaking_time'].isna())]

# 5. 按Age区间分组计算平均天数
result = valid_df.groupby('Age_Interval')['days_to_next_breaking'].mean().reset_index()
print(result)

结果说明

针对示例数据,所有记录的Age均为861,会被划分到850-899区间,计算得到的平均等待天数为87.8。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:07:22