Pandas DataFrame与Series的矩阵乘法

9 投票
1 回答
14394 浏览
提问于 2025-04-17 19:14

我想把一个 pandas 数据框和一个序列进行矩阵乘法

df = pandas.DataFrame({'a':[4,1,3], 'b':[5,2,4]},index=[1,2,3])
ser = pandas.Series([0.6,0.4])

df 是,

 a  b
1  4  5
2  1  2
3  3  4

ser 是,

0    0.6
1    0.4

我想要的结果是一个矩阵乘积,像这样

ans 是,

我可以通过使用 numpy 的点运算符来实现这个,并重新构建我的数据框

c = a.values.dot(b.transpose())
c = pandas.DataFrame(c, index = a.index, columns = ['ans'])
print c


   ans
1  4.4
2  1.4
3  3.4

在 pandas 中有没有直接的方法可以做到这一点?

1 个回答

16

pandas会自动根据序列的索引进行对齐,可以使用点(dot)函数。

In [3]: df = pd.DataFrame({'a' : [4,1,3], 'b' : [5,2,4]},index=[1,2,3])

In [4]: s = pd.Series([0.6,0.4],index=['a','b'])

In [5]: df.dot(s)
Out[5]: 
1    4.4
2    1.4
3    3.4

撰写回答