python怎么创建变量_创建一个新变量,它是python中另一个变量的...

当A列的值在一周内最高时,如何为变量S分配值1?另外,当B的值在一周内最小时,如何将值2分配给变量S.我正在使用按日期时间索引的每小时数据.

这是我的数据框的样子:

A B S

datetime

6/14/2004 1:00 384.5 383.6 0

6/14/2004 2:00 384.3 382.3 0

6/14/2004 3:00 383.3 382.3 0

6/14/2004 4:00 383.3 382.6 0

6/14/2004 5:00 383.3 382.8 0

6/14/2004 6:00 383.3 382.5 0

6/14/2004 7:00 383.3 382.3 0

6/14/2004 8:00 383.8 382.3 0

6/14/2004 9:00 382.8 382.1 0

6/14/2004 10:00 382.6 382.1 0

我尝试使用每周重新采样并获取最大值,但是由于它比我最初想象的要复杂,所以我不怎么编码.

这是我希望最终数据看起来像的样子.

A B S

datetime

6/14/2004 1:00 384.5 383.6 0

6/14/2004 2:00 384.3 382.3 0

6/14/2004 3:00 383.3 382.3 0

6/14/2004 4:00 383.3 382.6 0

6/14/2004 5:00 383.3 382.8 0

6/14/2004 6:00 383.3 382.5 0

6/14/2004 7:00 383.3 382.3 0

6/14/2004 8:00 383.8 382.3 0

6/14/2004 9:00 382.8 382.1 0

6/14/2004 10:00 382.6 382.1 0

6/14/2004 11:00 382.5 381.8 0

6/14/2004 12:00 382.8 382.3 0

6/14/2004 13:00 383.1 382.3 0

6/14/2004 14:00 385.8 382.5 0

6/14/2004 15:00 385.1 383.6 0

6/14/2004 16:00 384.8 383.5 0

6/14/2004 17:00 384.8 382.5 0

6/14/2004 18:00 383.6 382.8 0

6/14/2004 19:00 383.8 382.8 0

6/14/2004 20:00 383.3 382.8 0

6/14/2004 21:00 383.1 382.6 0

6/14/2004 22:00 383.1 382.6 0

6/14/2004 23:00 383.1 382.6 0

6/15/2004 0:00 382.8 382.6 0

6/15/2004 1:00 383.3 382.6 0

6/15/2004 2:00 383.6 382.3 0

6/15/2004 3:00 383.8 382.5 0

6/15/2004 4:00 382.8 382.1 0

6/15/2004 5:00 383.0 382.1 0

6/15/2004 6:00 382.8 382.0 0

... ... ... ...

6/24/2004 20:00 402.8 401.8 0

6/24/2004 21:00 402.3 401.8 0

6/24/2004 22:00 402.3 401.8 0

6/24/2004 23:00 402.1 401.1 0

6/25/2004 0:00 402.1 401.8 0

6/25/2004 1:00 402.1 401.3 0

6/25/2004 2:00 402.1 400.1 0

6/25/2004 3:00 401.6 400.8 0

6/25/2004 4:00 401.5 400.8 0

6/25/2004 5:00 401.3 400.8 0

6/25/2004 6:00 401.1 400.6 0

6/25/2004 7:00 402.1 400.8 0

6/25/2004 8:00 402.1 400.6 0

6/25/2004 9:00 401.6 400.5 0

6/25/2004 10:00 401.8 400.8 0

6/25/2004 11:00 401.5 400.6 0

6/25/2004 12:00 401.3 400.1 0

6/25/2004 13:00 402.8 401.3 0

6/25/2004 14:00 402.8 401.0 **1**

6/25/2004 15:00 401.5 400.1 0

6/25/2004 16:00 401.6 400.6 0

6/25/2004 17:00 401.8 401.0 0

6/25/2004 18:00 402.1 400.8 0

6/25/2004 19:00 402.3 400.8 0

6/25/2004 20:00 402.6 401.6 0

6/25/2004 21:00 401.8 401.3 0

6/25/2004 22:00 401.8 400.6 0

6/28/2004 0:00 401.8 401.6 0

6/28/2004 1:00 402.3 401.6 0

6/28/2004 2:00 402.3 401.5 0

对于第一周,S列在6/18/2004 18:00中将具有值1,在6/15/2004 11:00中将具有值2

对于第二周,S列在6/25/2004 14:00中将具有值1,在6/21/2004 18:00中将具有值2

我想出了四个规则:

1.当当前周内A = max(A)时,将值1放入S.如果一周内A最大值不是唯一的,则在最后一次出现A时将S放入1.

2.当当前周内的B = min(B)时,将值2放入S.如果一周中B的最小值不是唯一的,则在B中出现最小值的最后一次出现时将2放入S中.

3.整周重复一次.整个数据集每小时可能有80k数据行.

4.在每周内:如果max(A)和min(B)在同一日期时间索引处出现,则将值0保留为S(不变).

这是读取数据的代码:

import pandas as pd

url = 'https://www.dropbox.com/s/x7wl75rkzsqgkoj/dataset.csv?dl=1'

p = pd.read_csv(url)

p.set_index('datetime', drop=True, inplace=True)

p

这是一张图片,说明我希望输出看起来如何:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值