gpt4 book ai didi

python - 使用索引将一个数据帧的值映射到另一数据帧列

转载 作者:行者123 更新时间:2023-12-01 07:14:08 25 4
gpt4 key购买 nike

我有一个数据框 df1,其中包含三列(目标、季节性和季节性指数)。季节性模式每 7 点重复一次。季节性的最后一个索引是 2。我有另一个数据框 df2,它有 10 行的预测列。现在我想在 df2 中创建新列,它将是 df1 的预测列和季节性列的总和。这里的问题是映射。我想使用季节性索引列和相应的季节性列将值添加到预测列。例如:第四个季节性指数的季节性值应添加到预测列的第一个元素中。用尽第 6 个指数值后,添加应再次从零开始,因为季节性在 7 点后重复。

df1

Target Seasonality Seasonality_index
Datetime
2019-01-01 00:00:00 0.44 0.12 0
2019-01-01 01:00:00 0.44 0.06 1
2019-01-01 02:00:00 0.43 0.01 2
2019-01-01 03:00:00 0.43 -0.04 3
2019-01-01 04:00:00 0.43 -0.09 4
2019-01-01 05:00:00 0.43 -0.10 5
2019-01-01 06:00:00 0.42 -0.13 6
2019-01-01 07:00:00 0.42 0.12 0
2019-01-01 08:00:00 0.42 0.06 1
2019-01-01 09:00:00 0.43 0.01 2


df2

Datetime forecasted Expected_output
2019-01-01 10:00:00 7.21 7.21 -(-0.04) #4th element
2019-01-01 11:00:00 7.20 7.20 -(-0.09) #5th element
2019-01-01 12:00:00 7.19 7.19 -(-0.10) #6th element
2019-01-01 13:00:00 7.18 7.18 -(-0.13) #7th element
2019-01-01 14:00:00 7.19 7.19 -(0.12) #1st element
2019-01-01 15:00:00 7.19 7.19 -(0.06) #2nd element
2019-01-01 16:00:00 7.20 7.20 -(-0.10) #3rd element
2019-01-01 17:00:00 7.20 7.20 -(-0.04) #4th element
2019-01-01 18:00:00 7.21 7.21 -(-0.09) #5th element
2019-01-01 19:00:00 7.20 7.20 -(-0.10) #6th element

最佳答案

我相信你可以使用:

repeat = df['Seasonality_index'].max() + 1

#first convert first group values to list
a = df1['Seasonality'].tolist()[:repeat]
print (a)
[0.12, 0.06, 0.01, -0.04, -0.09, -0.1, -0.13]

#reorder values by constant
first = df['Seasonality_index'].iat[-1] + 1
b= a[first:] + a[:first]
print (b)
[-0.04, -0.09, -0.1, -0.13, 0.12, 0.06, 0.01]

#repeat values by length of df2
arr = np.tile(b, int(len(df2) // repeat) + repeat)
#assign by length of df2
df2['test'] = arr[:len(df2)]
df2['Expected_output'] = df2['forecasted'] - arr[:len(df2)]

print (df2)
forecasted Expected_output test
Datetime
2019-01-01 10:00:00 7.21 7.25 -0.04
2019-01-01 11:00:00 7.20 7.29 -0.09
2019-01-01 12:00:00 7.19 7.29 -0.10
2019-01-01 13:00:00 7.18 7.31 -0.13
2019-01-01 14:00:00 7.19 7.07 0.12
2019-01-01 15:00:00 7.19 7.13 0.06
2019-01-01 16:00:00 7.20 7.19 0.01
2019-01-01 17:00:00 7.20 7.24 -0.04
2019-01-01 18:00:00 7.21 7.30 -0.09
2019-01-01 19:00:00 7.20 7.30 -0.10

关于python - 使用索引将一个数据帧的值映射到另一数据帧列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58057014/

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