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

如何从DataFrame提取停机前的累计在线天数及对应日期?

解决方法

假设你的DataFrame包含Date日期列、col1状态列(0=离线/1=运行),以及已经计算好的col2累计在线天数列,按以下步骤操作:

  • 第一步:标记出停机前的最后一条在线记录
    找出所有「当前是运行状态(col1=1)且下一行是离线状态(col1=0)」的行,用shift()方法实现:

    # 生成标记列,标记符合条件的行
    df['is_last_online'] = (df['col1'] == 1) & (df['col1'].shift(-1) == 0)
    
  • 第二步:提取目标数据生成新DataFrame
    筛选出标记为True的行,只保留Date和col2列,并重命名col2为DaysOnline,最后重置索引:

    # 提取数据并整理格式
    result_df = df.loc[df['is_last_online'], ['Date', 'col2']].rename(columns={'col2': 'DaysOnline'}).reset_index(drop=True)
    

补充说明

如果你的col2是从0开始累计的(比如连续4天在线,col2的值是0、1、2、3),那实际在线天数需要加1才能匹配示例结果,只需在提取后加一行:

result_df['DaysOnline'] = result_df['DaysOnline'] + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:04:57