计算时间序列中的连续二元指标数量

时间:2018-09-11 15:22:26

标签: python pandas time-series

我有一个数据框,该框使用二进制指标来反映客户在特定月份内是否还活着。如果客户是有生命的,则为1,否则为0。数据帧如下所示:

const { merge } = require("webpack-merge");
const { join } = require("path");
// And so on...

当一个客户活着时,他们在特定月份获得1。同样,如果他们居住在下个月(或任何一个月),则该月也将得到1。

我想在数据框的末尾添加一列,以计算当月居住的客户数量,也算上个月的居住人数。

我已经使用这种方法在excel中进行了计算,但是我不清楚如何在Python中进行此操作。 这是我使用的excel公式。

Customer    A   B   C   D   E   F   G   H   I   J
11/30/2015  1   0   1   0   0   1   1   0   0   0
12/31/2015  0   1   0   1   0   1   1   0   0   1
1/31/2016   0   0   0   0   0   1   1   0   0   1
2/29/2016   1   1   1   1   1   1   0   1   1   1
3/31/2016   1   1   0   1   1   0   1   1   0   1
4/30/2016   0   1   1   1   0   1   1   1   0   1
5/31/2016   1   1   1   1   1   1   0   1   0   1

结果数据框如下所示:

COUNTIFS(B1:TE1,1,B2:TE2,1)

2 个答案:

答案 0 :(得分:3)

您可以使用shift

((df.shift()==1)&(df.shift()==df)).sum(1)
Out[80]: 
0    0
1    2
2    3
3    2
4    6
5    5
6    6
dtype: int64

答案 1 :(得分:2)

使用rolling

>>> (df.rolling(2).sum() == 2).sum(1)
0    0
1    2
2    3
3    2
4    6
5    5
6    6
dtype: int64

# df['Customers_live_consecutive_months'] = (df.rolling(2).sum() == 2).sum(1)