Python Pandas-数据帧与另一个数据帧的乘积之和
我有一个pandas数据框架,其中包含在不同时间(索引)在特定位置(列)测量的值。例如(如果我将时间索引设置为整数): 我还想对数据应用多组权重:Python Pandas-数据帧与另一个数据帧的乘积之和,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个pandas数据框架,其中包含在不同时间(索引)在特定位置(列)测量的值。例如(如果我将时间索引设置为整数): 我还想对数据应用多组权重: weights = pd.DataFrame(index=['I', 'II'], columns=['A', 'B', 'C'], data=[[0.5, 0.5, 0.0], [0.5, 0.0, 0.5]]) > weights: > A B C > I 0.5 0.5 0.0 > II
weights = pd.DataFrame(index=['I', 'II'], columns=['A', 'B', 'C'], data=[[0.5, 0.5, 0.0], [0.5, 0.0, 0.5]])
> weights:
> A B C
> I 0.5 0.5 0.0
> II 0.5 0.0 0.5
我需要计算的是两组不同权重的权重*数据的逐行和积。e、 g:
> result:
> I II
> 1 1.5 2.0
> 2 4.5 5.0
> 3 7.5 8.0
我知道如何计算单个列,例如:
result_I = data.mul(weights[:].ix['I'], axis=1).sum(axis=1)
result_I:
> 0 1.5
> 1 4.5
> 2 7.5
除了在所有行上迭代和连接之外,是否有一种方法可以创建上面概述的结果数据帧?或者迭代/串联是最好的方法吗?这是一个经典的矩阵乘法问题。您可以使用
np.dot
:
In [190]: result = pd.DataFrame(np.dot(data, weights.T), columns=weights.index); result
Out[190]:
I II
0 1.5 2.0
1 4.5 5.0
2 7.5 8.0
正如John Gait指出的,一个较短的版本是
result=data.dot(weights.T)
这是一个经典的矩阵乘法问题。您可以使用np.dot
:
In [190]: result = pd.DataFrame(np.dot(data, weights.T), columns=weights.index); result
Out[190]:
I II
0 1.5 2.0
1 4.5 5.0
2 7.5 8.0
正如John Gait指出的,一个较短的版本是
result=data.dot(weights.T)
pd.DataFrame
有一个.dot
方法
In [806]: data.dot(weights.T)
Out[806]:
I II
0 1.5 2.0
1 4.5 5.0
2 7.5 8.0
pd.DataFrame
有一个.dot
方法
In [806]: data.dot(weights.T)
Out[806]:
I II
0 1.5 2.0
1 4.5 5.0
2 7.5 8.0
绝对是。我想我看不见森林了Thanks@MarkD很乐意帮忙。:)我不知道熊猫数据帧有自己的点函数,但我想它们有点函数,你可以使用它本身(这是相同的,但更紧凑的代码)。它绝对是。我想我看不见森林了Thanks@MarkD很乐意帮忙。:)我不知道熊猫数据帧有自己的点函数,但我想它们有点函数,你可以使用它本身(这是相同的,但更紧凑的代码)。