我正在尝试计算连续几天不出售产品。
假设数据框的每一行代表一天,已经按日期排序了。
在此示例中,结果应为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]))使用熊猫矢量化?
答案 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)