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

标签 python pandas numpy

我正在寻找相当于对几列数据执行特定计算的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/

相关文章:

python - 获取 Pandas 系列的日期

python - 从 OpenErp 中删除模块安装队列

python - tf 操作 control_inputs 与 inputs

python - 完成测试后使用分类模型预测重新填充数据框的替代方法?

python - Pandas 将时间序列数据重新采样为 15 分钟和 45 分钟 - 使用多索引或列

python - OpenCV不接受ndarray到TextDecectorCNN.detect()

python - 为什么 ";"违反格式标准而存在?

python-3.x - 过滤多边形内的 GeoPandas 数据框,并从数据框中删除不存在的数据框

python - 将 scipy.optimize 用于非代数函数

python - scipy.optimize.curve_fit : not a proper array of floats error/object too deep for desired array