我有一个数据框架,它使用二进制指标来反映客户在特定月份是否处于活动状态。如果客户是活动的,则有1,如果不是,则有0。数据帧如下所示:
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
当客户第一次上线时,他们在特定月份得到1分。因此,当一个特定的客户有他们的第一个1,这是一个月,他们是“新的”。你知道吗
我想在dataframe的末尾添加一个列来统计“新”客户的数量。你知道吗
我认为最有效的方法是将第0行到第I行的值相加,然后计算和等于1的次数。当此总和大于1时,则该客户已存在2个月,并且在给定的月份中不是新客户。你知道吗
我已经用这个方法在excel中计算过了,但是我不清楚如何在Python中进行计算。你知道吗
生成的数据帧如下所示:
Customer A B C D E F G H I J New_Customers
11/30/2015 1 0 1 0 0 1 1 0 0 0 4
12/31/2015 0 1 0 1 0 1 1 0 0 1 3
1/31/2016 0 0 0 0 0 1 1 0 0 1 0
2/29/2016 1 1 1 1 1 1 0 1 1 1 3
3/31/2016 1 1 0 1 1 0 1 1 0 1 0
4/30/2016 0 1 1 1 0 1 1 1 0 1 0
5/31/2016 1 1 1 1 1 1 0 1 0 1 0
您可以应用一个累计最大值,该值可以转发每列的“1”,并对轴1中的所有列求和,然后计算差值。 第一个值为null,可以通过对第一行求和来填充
输出:
通过定义自定义
new
函数并使用DataFrame.expanding
。我不知道为什么expanding().apply(new)
的结果需要从float
到int
进行强制转换,但是,嘿,它是有效的:相关问题 更多 >
编程相关推荐