将值减小一定范围的随机选择

时间:2018-11-08 15:17:53

标签: python pandas

我有36户家庭的用电量(df),我只想修改高峰时段(从17:00到23:00)的值。我想通过乘以一个系数来实现此目的,但是,我希望该系数从8%随机变化为12%。

我使用以下函数从datetime列中删除了时间(HH:MM:SS):

df['Time']=pd.to_datetime(df['DateTime']).dt.strftime ('%H:%M:%S')

然后我使用以下函数将df ['Time']列的值与高峰时段的值进行比较

df.loc[(df['Time'] == '17:00:00') | (df['Time'] == '17:30:00') | (df['Time'] == '18:00:00') | (df['Time'] == '18:30:00') | (df['Time'] == '19:00:00') | (df['Time'] == '19:30:00') | (df['Time'] == '20:00:00') | (df['Time'] == '20:30:00') | (df['Time'] == '21:00:00') | (df['Time'] == '21:30:00') | (df['Time'] == '22:00:00') | (df['Time'] == '22:30:00') | (df['Time'] == '23:00:00') , 'Response KWH/hh (per half hour) '] *= 0.9

但是我有以下问题:

  1. 对于从0.08到0.12范围内随机选择的因子而不是固定因子,如何更改因子0.9?因此30分钟的样本中的每个样本都乘以一个介于0.08到0.12之间的不同因子

预先感谢

1 个答案:

答案 0 :(得分:0)

基本思想应如下:

rand_nums = np.random.rand(shape)*(0.12-0.08) + 0.08

这将为您提供介于0.08和0.12之间的随机值。

然后,您可以将其乘以时间数组,转换为秒。