如果时间频率大于某个值,则创建一个新列

Yi Hong Quek

我有一个以 15 分钟频率增加的数据框,但有时有一个间隙,我想通过一个任务将它们组合在一起。

这是一个示例数据:

Input:

data = {'Date':['2019-01-05 00:00:00', '2019-01-05 00:15:00',
                '2019-01-05 00:30:00', '2019-01-05 00:45:00',
                '2019-01-05 01:00:00', '2019-01-05 01:15:00',
                '2019-01-05 01:30:00', '2019-01-05 01:45:00',
               '2019-01-06 15:00:00', '2019-01-06 15:15:00',
               '2020-01-06 15:30:00', '2020-01-06 15:45:00',
               '2020-02-10 22:15:00', '2020-02-10 22:30:00',
               '2020-02-10 22:45:00', '2020-02-10 23:00:00',
                '2020-02-11 23:15:00', '2020-02-11 23:30:00',
                '2020-02-11 23:45:00', '2020-02-11 00:00:00'],
        'Ratings':[9.0, 8.0, 5.0, 3.0, 5.0,
                  1.0, 5.2, 4.5, 8.9, 4.5,
                  4.5, 7.6, 8.3, 5.6, 5.3,
                  3.4, 5.5, 2.4, 5.3, 5.4]}  
  
df = pd.DataFrame(data, index =[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])  
  
# print the data  
print(df)

Output:
                   Date  Ratings
1   2019-01-05 00:00:00      9.0
2   2019-01-05 00:15:00      8.0
3   2019-01-05 00:30:00      5.0
4   2019-01-05 00:45:00      3.0
5   2019-01-05 01:00:00      5.0
6   2019-01-05 01:15:00      1.0
7   2019-01-05 01:30:00      5.2
8   2019-01-05 01:45:00      4.5
9   2019-01-06 15:00:00      8.9
10  2019-01-06 15:15:00      4.5
11  2020-01-06 15:30:00      4.5
12  2020-01-06 15:45:00      7.6
13  2020-02-10 22:15:00      8.3
14  2020-02-10 22:30:00      5.6
15  2020-02-10 22:45:00      5.3
16  2020-02-10 23:00:00      3.4
17  2020-02-11 23:15:00      5.5
18  2020-02-11 23:30:00      2.4
19  2020-02-11 23:45:00      5.3
20  2020-02-11 00:00:00      5.4

如果频率超过预期频率(在本例中为 15 分钟),我需要它通过创建新列进行排序。

期望:

                   Date  Ratings  Task
1   2019-01-05 00:00:00      9.0     1
2   2019-01-05 00:15:00      8.0     1
3   2019-01-05 00:30:00      5.0     1
4   2019-01-05 00:45:00      3.0     1
5   2019-01-05 01:00:00      5.0     1
6   2019-01-05 01:15:00      1.0     1
7   2019-01-05 01:30:00      5.2     1
8   2019-01-05 01:45:00      4.5     1
9   2019-01-06 15:00:00      8.9     2
10  2019-01-06 15:15:00      4.5     2
11  2019-01-06 15:30:00      4.5     2
12  2019-01-06 15:45:00      7.6     2
13  2019-02-10 22:15:00      8.3     3
14  2019-02-10 22:30:00      5.6     3
15  2019-02-10 22:45:00      5.3     3
16  2019-02-10 23:00:00      3.4     3
17  2019-02-11 00:00:00      5.5     4
18  2019-02-11 00:15:00      2.4     4
19  2019-02-11 00:30:00      5.3     4
20  2019-02-11 00:45:00      5.4     4

如您所见,如果时间跳跃超过 15 分钟,则有 4 个任务组合在一起。

日期列当前为 datetime64 格式,我可以将其设置为所需的任何格式。谢谢!

科拉连

尝试:

df['Task'] = df['Date'].sub(df['Date'].shift()) \
                       .gt(pd.Timedelta(minutes=15)) \
                       .cumsum() + 1
>>> df
                  Date  Ratings  Task
1  2019-01-05 00:00:00      9.0     1
2  2019-01-05 00:15:00      8.0     1
3  2019-01-05 00:30:00      5.0     1
4  2019-01-05 00:45:00      3.0     1
5  2019-01-05 01:00:00      5.0     1
6  2019-01-05 01:15:00      1.0     1
7  2019-01-05 01:30:00      5.2     1
8  2019-01-05 01:45:00      4.5     1
9  2019-01-06 15:00:00      8.9     2
10 2019-01-06 15:15:00      4.5     2
11 2020-01-06 15:30:00      4.5     3
12 2020-01-06 15:45:00      7.6     3
13 2020-02-10 22:15:00      8.3     4
14 2020-02-10 22:30:00      5.6     4
15 2020-02-10 22:45:00      5.3     4
16 2020-02-10 23:00:00      3.4     4
17 2020-02-11 23:15:00      5.5     5
18 2020-02-11 23:30:00      2.4     5
19 2020-02-11 23:45:00      5.3     5
20 2020-02-11 00:00:00      5.4     5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建一个新列,该列列出值大于某个特定值的列的名称

如果组中的任何一行包含某个值,则创建一个新列并分配值

分组,如果日期时间超过特定时间,则创建一个“ break”,在原始分组列(R,dplyr)中创建一个新值

如果另一列中的某个值是离群值,如何在R中创建一个新的列,该列为1?

如果长度大于某个值,则从列表列表中删除一个元素

如果两个列之间的值匹配,则创建一个新列?

熊猫:如果预先存在的列包含一些值,则使用“是”创建一个新列;如果该列的值为“”,则创建一个“否”

创建一个新列,其中列出了熊猫数据框每一行的最大频率值

Pandas - 创建新列 - 如果另一个列值在列表中(正确方式)

C ++如何检查行中的最后一个值,如果它大于某个值,则替换行

检查日期时间中的前一行,如果时间大于某个值,则放入一个组并以秒为单位获取其持续时间(R,dplyr,lubridate)

如何创建一个新列以计算Power Bi中某个值的百分比权重

如果其中一列大于0,则创建一个布尔列

Rx observable,如果某个超时时间到期,它将发布一个值

根据ID的列值创建一个新列

在熊猫中创建一个基于频率的类别的新列

如何基于另一个向量中的某个值创建新向量?

条件格式(如果一个时间大于另一个时间)

如何在数据框中创建一个新列,其值表示某个列中的值所属的范围?

如果行之间的列中的增加幅度大于1,则设置一个值

如果条件为真,则在 Pandas 中创建一个新列并从现有列中分配值

创建一个新的列,该列是日期时间的最大值,并带有其他列上的条件

使用基于条件的值创建一个新列

如果列值相等,则根据相应列中的第一个和最后一个实例创建新列

如果边属性大于某个值,则添加新顶点

通过使用另一个列值创建一个新列

如果前一列值为日期时间,如何使用 R 编程创建新列

是否有一个或多个值大于/小于某个值的行查看或浏览表

如果一个值大于另一个值,则过滤查询集