【发布时间】:2016-11-26 17:49:56
【问题描述】:
解决一个问题,我在 python 中有以下数据框
week hour week_hr store_code baskets
0 201616 106 201616106 505 0
1 201616 107 201616107 505 0
2 201616 108 201616108 505 0
3 201616 109 201616109 505 18
4 201616 110 201616110 505 0
5 201616 106 201616108 910 0
6 201616 107 201616106 910 0
7 201616 108 201616107 910 2
8 201616 109 201616108 910 3
9 201616 110 201616109 910 10
这里的“hour”变量是“weekday”和“hour of shop”的组合,例如工作日是 monday=1,hour of shop 是早上 6 点,那么 hour 变量 = 106,类似地 cal_hr 是 week 和 hour 的 concat。我想得到那些我看到没有篮子趋势的行,即 滚动 3 周 0 个篮子。在上述情况下,我只会得到前 3 行。即对于商店 505,从 106 到 108 有 1 个篮子的连续循环。但我不想要 行 (4,5,6),因为即使连续 3 个小时有 0 个篮子,但时间实际上并不连续。 110 -> 106 -> 107 。为了使小时数连续,它们应位于 106 - 110. 的 范围 内。基本上我想要所有商店和相应的行,如果它在任何一天连续 3 小时有 0 个篮子。虚拟输出
week hour week_hr store_code baskets
0 201616 106 201616106 505 0
1 201616 107 201616107 505 0
2 201616 108 201616108 505 0
我可以在 python 中使用 pandas 和循环来做到这一点吗?数据集需要按商店和小时排序。对 python 完全陌生(
【问题讨论】:
-
附加信息,我可以按以下方式循环吗,每小时循环一次,但每小时检查接下来的 3 小时,如果这些小时内的篮子是 0 ,则返回这些行,
-
我建议首先获取一个包含所有具有购物篮 = 0 的元素的列表。(创建一个以 store_code 作为键的字典,并以购物篮 = 0 作为值的小时列表。然后,找到任何三个或每个store_code对应的list中的元素更多,最后使用'good hours&store_code'的list从db中获取完整数据。我会尝试做更详细的回答
标签: python loops python-3.x pandas dataframe