gpt4 book ai didi

python迭代循环遍历数据框的列

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:29 26 4
gpt4 key购买 nike

正在处理一个问题,我在 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”的组合,例如工作日是星期一=1,商店的营业时间是早上 6 点,那么 hour 变量 = 106,同样 cal_hr 是星期和小时的组合。我想要获得那些我看到没有篮子趋势的行,即 连续 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

我可以使用 pandas 和循环在 python 中执行此操作吗?数据集需要按商店和时间排序。全新的 python (

最佳答案

执行以下操作:

  1. 按 store_code、week_hr 排序
  2. 按 0 筛选
  3. 存储 df['week_hr'][1:].values-df['week_hr'][:-1].values 之间的减法,以便您了解它们是否连续。
  4. 现在您可以根据需要为连续分组和过滤分组。

    import numpy as np
    import pandas as pd

    # 1
    t1 = df.sort_values(['store_code', 'week_hr'])

    # 2
    t2 = t1[t1['baskets'] == 0]

    # 3
    continuous = t2['week_hr'][1:].values-t2['week_hr'][:-1].values == 1
    groups = np.cumsum(np.hstack([False, continuous==False]))
    t2['groups'] = groups

    # 4
    t3 = t2.groupby(['store_code', 'groups'], as_index=False)['week_hr'].count()
    t4 = t3[t3.week_hr > 2]
    print pd.merge(t2, t4[['store_code', 'groups']])

不需要循环!

关于python迭代循环遍历数据框的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38532978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com