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
相关产品推荐
相关产品推荐

