计算天数而不出售

时间:2019-11-21 11:26:05

标签: python pandas numpy

我正在尝试计算连续几天不出售产品。

假设数据框的每一行代表一天,已经按日期排序了。

在此示例中,结果应为1(天):

SignInManager

这应该是0天:

Startup.cs

这应该是5天

   sku   center units
0   103896  1   2.0
1   103896  1   0.0
2   103896  1   5.0
3   103896  1   0.0
4   103896  1   7.0
5   103896  1   0

我发现的唯一方法是执行以下操作:

   sku   center units
0   103896  2   2.0
1   103896  2   0.0
2   103896  2   5.0
3   103896  2   0.0
4   103896  2   7.0

然后:

   sku center units
0   103  3   0.0
1   103  3   0.0
2   103  3   0.0
3   103  3   0.0
4   103  3   0.0

是否有一些方法可以仅对组(df.groupby([sku,center]))使用熊猫矢量化?

1 个答案:

答案 0 :(得分:3)

您可以使用累加和最后计数零个数字

df = pd.DataFrame([[0, 103896, 1, 2.0], [1, 103896, 1, 0.0], [2, 103896, 1, 5.0], [3, 103896, 1, 0.0], [4, 103896, 1, 0.0], [5, 103896, 1, 0.0]], columns=('id', 'sku', 'center', 'units'))
result = np.sum((df.units > 0).iloc[::-1].cumsum() == 0)
print(result)