计算特定时间段内的列值

时间:2019-08-21 19:20:05

标签: python-3.x pandas

我有一个如下所示的数据框,并希望根据当月+上个月(例如一年)来计算具有“打开”状态的“案例”数。

Current Month       Case      Status 
2019-06-01           1        Open 
2019-05-01           1        Open 
2019-04-01           1        Open 
2019-03-01           1        Closed

期望的输出要谢谢。

Current Month       Case      Status    Count
2019-06-01           1        Open        3    # (June + May + Apr)
2019-05-01           1        Open        2    # (May + Apr)
2019-04-01           1        Open        1    # (Apr)
2019-03-01           1        Closed      0

1 个答案:

答案 0 :(得分:4)

这是一种方法

df=df.sort_values('CurrentMonth')
df['Count']=df['Status'].eq('Open').iloc[::-1].groupby([df.CurrentMonth.dt.year,df.Case]).cumsum()
df
Out[483]: 
  CurrentMonth  Case  Status  Count
0   2019-06-01     1    Open    3.0
1   2019-05-01     1    Open    2.0
2   2019-04-01     1    Open    1.0
3   2019-03-01     1  Closed    0.0