gpt4 book ai didi

python - 在时间序列数据中创建新的 sumproduct 列

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

我正在寻找相当于对几列数据执行特定计算的Python。

这就是我的数据集的头部的样子。

          Time  GenA  GenB  GenC  Price
0 1/01/2011 702 367 1355 58
1 2/01/2011 742 0 1013 59
2 3/01/2011 763 322 887 43
3 4/01/2011 558 356 851 50
4 5/01/2011 519 358 677 32
5 6/01/2011 697 154 352 35
6 7/01/2011 782 2 999 52
7 8/01/2011 579 10 493 47
8 9/01/2011 678 313 931 63
9 10/01/2011 595 314 434 34
10 11/01/2011 748 326 1338 72
11 12/01/2011 782 229 503 36
12 13/01/2011 645 3 410 53
13 14/01/2011 800 53 365 40
14 15/01/2011 639 11 123 62
15 16/01/2011 749 75 629 53
16 17/01/2011 625 223 537 38
17 18/01/2011 529 10 47 45
18 19/01/2011 687 192 542 55
19 20/01/2011 727 85 122 31
20 21/01/2011 674 183 1067 67

我想为 genA、genB 和 genC 添加三列加权价格,我可以在 Excel 中执行此操作,如下所示:

excel

有什么办法可以在Python中做到这一点吗?我有一个相当大的数据集,所以如果可能的话那就太好了。

最佳答案

这应该可以解决问题

import pandas as pd
import numpy as np

size = 8

#This is to generate a random set, you can use your data instead of this
df = pd.DataFrame(
data=np.random.randint(1,10,(20,5)),
index=np.arange(20),
columns=['Time', 'GenA', 'GenB', 'GenC', 'Price']
)

max_size = df.shape[0]

for a in ['A','B','C']:
e = 'Gen' + a + '_W'
df[e] = np.empty(max_size)
for i in range(max_size-size):
df[e][i] = np.average(df['Price'][i:i+size], weights=df['Gen'+a][i:i+size])

也许有一种更“ Pandas native ”的方式来做到这一点,但我习惯了 numpy 方式。无论如何希望它能有所帮助

关于python - 在时间序列数据中创建新的 sumproduct 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54564110/

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