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

Pandas数据处理求助:时长计算、ID统计与状态模式子集提取

Pandas状态序列数据分析求助:三个核心操作待解决

我是Pandas新手,目前手里有一份记录设备状态的DataFrame,需要完成以下三个操作:

1. 计算每个ID从当前状态到下一个状态的间隔天数

示例:ID1中2017-04-26的Failure到2017-05-16的Maintenance间隔19天

2. 统计相关ID数量

  • a. 故障(Failure)次数多于1次的ID数量;
  • b. 故障次数多于2次且中间至少有1次维护(Maintenance)的ID数量,以及故障间有2次维护等的ID数量;

3. 提取Failure-Failure(F-F)和Failure-Maintenance(F-M)模式的子集数据

创建DataFrame的代码

import pandas as pd
import numpy as np

sales = [ 
    {'ID': '1', 'Status': 'Failure', 'Date': '2017-04-26'}, 
    {'ID': '2', 'Status': 'Failure', 'Date': '2017-05-06'}, 
    {'ID': '1', 'Status': 'Maintenance', 'Date': '2017-05-16'}, 
    {'ID': '1', 'Status': 'Failure', 'Date': '2017-07-06'}, 
    {'ID': '2', 'Status': 'Failure', 'Date': '2017-09-06'}, 
    {'ID': '1', 'Status': 'Failure', 'Date': '2018-01-14'}, 
    {'ID': '3', 'Status': 'Maintenance', 'Date': '2017-07-16'}, 
    {'ID': '4', 'Status': 'Failure', 'Date': '2017-07-16'}, 
    {'ID': '2', 'Status': 'Maintenance', 'Date': '2018-07-06'}, 
    {'ID': '3', 'Status': 'Failure', 'Date': '2018-01-06'}, 
    {'ID': '3', 'Status': 'Maintenance', 'Date': '2018-07-06'}, 
    {'ID': '3', 'Status': 'Failure', 'Date': '2019-07-06'}, 
    {'ID': '2', 'Status': 'Maintenance', 'Date': '2019-05-06'}, 
    {'ID': '2', 'Status': 'Failure', 'Date': '2019-10-06'}, 
    {'ID': '4', 'Status': 'Maintenance', 'Date': '2019-11-06'}
]
df = pd.DataFrame(sales)
df['Date'] = pd.to_datetime(df['Date'])

我已经尝试过类似df.groupby(['ID', 'Status']).size().reset_index(name='counts').sort_values(['counts'], ascending=False)的groupby组合,但没能解决这些问题。另外我还准备了排序后的数据示例及预期的F-F、F-M子集结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:31:34