当前位置: 首页 > news >正文

【Pandas】pandas DataFrame dot

Pandas2.2 DataFrame

Binary operator functions

方法描述
DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作
DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作
DataFrame.sub(other[, axis, level, fill_value])用于执行逐元素的减法操作
DataFrame.mul(other[, axis, level, fill_value])用于执行逐元素的乘法操作
DataFrame.div(other[, axis, level, fill_value])用于执行逐元素的除法操作
DataFrame.truediv(other[, axis, level, …])用于执行逐元素的真除法操作
DataFrame.floordiv(other[, axis, level, …])用于执行逐元素的地板除法操作
DataFrame.mod(other[, axis, level, fill_value])用于执行逐元素的取模操作
DataFrame.pow(other[, axis, level, fill_value])用于对 DataFrame 中的元素进行幂运算
DataFrame.dot(other)用于计算两个 DataFrame(或 DataFrame 与 Series/数组)之间的**矩阵点积(矩阵乘法)**的方法

pandas.DataFrame.dot()

pandas.DataFrame.dot(other) 是 Pandas 中用于计算两个 DataFrame(或 DataFrame 与 Series/数组)之间的**矩阵点积(矩阵乘法)**的方法。它的行为类似于线性代数中的矩阵乘法,结果的行索引与原始 DataFrame 的行索引对齐,列索引与 other 的列索引对齐。


语法
DataFrame.dot(other)
  • 参数 other:可以是另一个 DataFrame、Series 或类数组结构(如 NumPy 数组)。
  • 返回值:一个新的 DataFrame 或 Series,具体取决于输入类型。

关键规则
  1. 维度对齐:调用方的列数必须与 other 的行数相等。
  2. 索引对齐:Pandas 会根据行/列标签自动对齐数据。若标签不匹配,可能导致 NaN 或错误。
  3. * 的区别df.dot(other) 是矩阵乘法,而 df * other 是逐元素相乘。

示例
示例 1:DataFrame × DataFrame
import pandas as pd# 创建两个 DataFrame
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['row1', 'row2'])
df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]}, index=['A', 'B'])# 矩阵乘法:df1 的列索引(A, B)与 df2 的行索引(A, B)对齐
result = df1.dot(df2)
print(result)

输出

       C   D
row1  23  31
row2  34  46

计算过程

  • row1 的结果:
    • C = 1*5 + 3*6 = 5 + 18 = 23
    • D = 1*7 + 3*8 = 7 + 24 = 31
  • row2 的结果:
    • C = 2*5 + 4*6 = 10 + 24 = 34
    • D = 2*7 + 4*8 = 14 + 32 = 46

示例 2:DataFrame × Series
import pandas as pddf = pd.DataFrame({'X': [1, 2, 3], 'Y': [4, 5, 6]}, index=['a', 'b', 'c'])
s = pd.Series([10, 20], index=['X', 'Y'])  # Series 的索引与 df 的列对齐result = df.dot(s)
print(result)

输出

a     90   # 1*10 + 4*20 = 10 + 80 = 90
b    120   # 2*10 + 5*20 = 20 + 100 = 120
c    150   # 3*10 + 6*20 = 30 + 120 = 150
dtype: int64

示例 3:DataFrame × 数组
import pandas as pd
import numpy as npdf = pd.DataFrame({'M': [1, 2], 'N': [3, 4]})
arr = np.array([[5, 6], [7, 8]])  # 2x2 数组result = df.dot(arr)
print(result)

输出

    0   1
0  26  30
1  38  44

计算过程

  • 第 0 行:1*5 + 3*7 = 5 + 21 = 26(列 0),1*6 + 3*8 = 6 + 24 = 30(列 1)
  • 第 1 行:2*5 + 4*7 = 10 + 28 = 38(列 0),2*6 + 4*8 = 12 + 32 = 44(列 1)

注意事项
  1. 维度不匹配:若列数 ≠ other 的行数,抛出 ValueError
  2. 索引对齐问题:若标签不匹配,可能生成 NaN。可用 .values 忽略索引:
    df1.dot(df2.values)  # 使用纯数值计算,忽略索引
    
  3. @ 运算符等价df1 @ df2df1.dot(df2) 结果相同。

通过 dot() 方法,可以高效实现线性代数中的矩阵乘法操作,适用于数据分析、机器学习等场景。

相关文章:

  • 【C++QT】Buttons 按钮控件详解
  • 乐聚机器人与地瓜机器人达成战略合作,联合发布Aelos Embodied具身智能
  • flask学习(1)
  • MongoDB Compass可视化工具
  • 常见接口测试常见面试题(JMeter)
  • 在 Ubuntu 环境为 Elasticsearch 引入 `icu_tokenizer
  • 深入理解表单---提交用户与网页交互的重要方式:GET 与 POST 的本质区别与应用实践
  • vue3:十一、主页面布局(修改顶部导航栏样式-右侧:用户信息+退出登录+全屏显示)
  • 突破厚铜PCB阻抗控制难题:多级阻抗实现方法
  • 工厂模式:解耦对象创建与使用的设计模式
  • vue项目,基于echarts的各省份地图展示
  • 解决:springmvc工程 响应时,将实体类对象 转换成json格式数据
  • Windows申请苹果开发者测试证书Uniapp使用
  • 二分小专题
  • [特殊字符] 分布式定时任务调度实战:XXL-JOB工作原理与路由策略详解
  • WGAN+U-Net架构实现图像修复
  • U盘能识别但无法写入数据的原因
  • 数据结构-图
  • 美团获全国首张低空物流全境覆盖运营合格证,其第四代无人机具备全域环境适应能力
  • 技术服务业-首套运营商网络路由5G SA测试专网在深光搭建完成并对外提供服务
  • 无视规范开“远端”、企业云端被窃密,国安部:莫让运维成运“危”
  • 广东东莞调整普通住宅价格标准:一类镇街上浮300余元/平方米
  • “茉上茶田”傍大牌诱导加盟续:违规从事特许经营被罚没670余万元
  • 印控克什米尔26名游客遭恐袭丧生后,印度对巴宣布多项反制措施
  • 重庆市委原常委、政法委原书记陆克华严重违纪违法被开除党籍和公职
  • 宁夏回族自治区人大环境与资源保护委员会主任委员张柏森被查