You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中DataFrame视为矩阵做乘积报错:如何解决对齐问题?

解决Pandas矩阵乘法"matrices are not aligned"错误

问题原因

Pandas的DataFrame.dot()方法并非单纯按矩阵形状匹配计算,而是会通过DataFrame的列名与另一个对象的索引名对齐来执行乘法。你的df1列名为col1、col2,而df2的行索引是默认的0、1,两者无匹配项,因此触发对齐错误。

修复方案

方案1:直接使用Numpy矩阵乘法(忽略Pandas索引对齐)

提取DataFrame底层的Numpy数组,用纯矩阵运算计算,再转回DataFrame:

import pandas as pd
import numpy as np

data1 = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df1 = pd.DataFrame(data1)

data2 = {'col3': [2,3]}
df2 = pd.DataFrame(data2)

# 使用@运算符(Python 3.5+支持,推荐写法)
result = pd.DataFrame(df1.values @ df2.values, columns=['matrix_product'])

# 或者用np.dot实现
# result = pd.DataFrame(np.dot(df1.values, df2.values), columns=['matrix_product'])

方案2:对齐df2的索引与df1的列名

修改df2的行索引,让它和df1的列名完全匹配,这样Pandas的dot()就能正常工作:

import pandas as pd

data1 = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df1 = pd.DataFrame(data1)

data2 = {'col3': [2,3]}
df2 = pd.DataFrame(data2)

# 将df2的索引设置为df1的列名
df2.index = df1.columns
result = df1.dot(df2)

结果说明

两种方法都会得到3×1的结果矩阵:

matrix_product
0              14
1              19
2              24

内容的提问来源于stack exchange,提问作者Hans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:42:13