pandas的对齐运算

pandas 笔记005

import numpy as np
import pandas as pd
a1 = pd.Series(np.arange(4),index=['a','b','c','d'])
a2 = pd.Series(np.arange(5),index=['a','r','c','u','k'])
print(a1)
print("="*20)
print(a2)
a    0
b    1
c    2
d    3
dtype: int32
====================
a    0
r    1
c    2
u    3
k    4
dtype: int32

相同的索引值相加后结果变为浮点数,不相同则返回 NAN值。

a1 + a2
a    0.0
b    NaN
c    4.0
d    NaN
k    NaN
r    NaN
u    NaN
dtype: float64
a3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['q','w','e','r'])
a4 = pd.DataFrame(np.arange(9).reshape(3,3),index=['a','u','c'],columns=['m','e','r'])
print(a3)
print("="*20)
print(a4)
   q  w   e   r
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
====================
   m  e  r
a  0  1  2
u  3  4  5
c  6  7  8

只有 行和列索引都相同的才能运算,否则返回 NAN

a3 + a4
    e     m     q     r     w
a   3.0   NaN   NaN   5.0   NaN
b   NaN   NaN   NaN   NaN   NaN
c   17.0  NaN   NaN   19.0  NaN
u   NaN   NaN   NaN   NaN   NaN
a1 = pd.Series(np.arange(4),index=['a','b','c','d'])
a2 = pd.Series(np.arange(5),index=['a','r','c','u','k'])
print(a1)
print("="*20)
print(a2)
print("="*20)
print(a1 + a2)
a    0
b    1
c    2
d    3
dtype: int32
====================
a    0
r    1
c    2
u    3
k    4
dtype: int32
====================
a    0.0
b    NaN
c    4.0
d    NaN
k    NaN
r    NaN
u    NaN
dtype: float64

使用填充值,不会返回 NAN值,如果a1,a2的索引值相同则将对应的值作算术运算,如果不同则作为一行新的数据,形成一个新的 Series索引

a1.add(a2,fill_value=0)
a    0.0
b    1.0
c    4.0
d    3.0
k    4.0
r    1.0
u    3.0
dtype: float64
a3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['q','w','e','r'])
a4 = pd.DataFrame(np.arange(9).reshape(3,3),index=['a','u','c'],columns=['m','e','r'])
print(a3)
print("="*20)
print(a4)
print("="*20)
print(a3 + a4)
   q  w   e   r
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
====================
   m  e  r
a  0  1  2
u  3  4  5
c  6  7  8
====================
    e     m     q     r     w
a   3.0   NaN   NaN   5.0   NaN
b   NaN   NaN   NaN   NaN   NaN
c  17.0   NaN   NaN   19.0  NaN
u   NaN   NaN   NaN   NaN   NaN

只有当两个 DataFrame索引独有的行和列独有的索引对应的值才返回 NAN,例如下面的 b行m列返回NAN值,其索引值是由 a3独有的b和a4独有的m组成的, 行和列其中之一的索引值不是独有的,则返回对应 DataFrame中的值,例如a行q列中的是a3,a4都有的,返回a3中 a行q列对应的值。


a3.add(a4,fill_value=0)
    e      m     q      r      w
a   3.0    0.0   0.0    5.0    1.0
b   6.0    NaN   4.0    7.0    5.0
c   17.0   6.0   8.0    19.0   9.0
u   4.0    3.0   NaN    5.0    NaN

r 开头字母表示会翻转参数

1/a3
q   w   e   r
a   inf 1.000000    0.500000    0.333333
b   0.250   0.200000    0.166667    0.142857
c   0.125   0.111111    0.100000    0.090909
a3.rdiv(1)
q   w   e   r
a   inf 1.000000    0.500000    0.333333
b   0.250   0.200000    0.166667    0.142857
c   0.125   0.111111    0.100000    0.090909

reindex指定索引和缺失值

将a3的列索引替换为a4的列索引 ,如果索引名字不相同,则返回 NAN(不改变原 DataFrame索引)

a3.reindex(columns=a4.columns))
    m   e   r
a   NaN 2   3
b   NaN 6   7
c   NaN 10  11

a3.reindex(columns=a4.columns,fill_value=66)
    m   e   r
a   66  2   3
b   66  6   7
c   66  10  11
arr = np.arange(12).reshape(3,4)
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

取出第一行

arr[0]
array([0, 1, 2, 3])

每一行都减去第一行(按行进行广播)

arr - arr[0]
array([[0, 0, 0, 0],
       [4, 4, 4, 4],
       [8, 8, 8, 8]])
a3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'],columns=['q','w','e','r'])
a3
    q   w   e   r
a   0   1   2   3
b   4   5   6   7
c   8   9   10  11

位置索引 iloc[m,n] 第一个参数m表示行,第二个参数n表示列

s1 = a3.iloc[0]
s1
q    0
w    1
e    2
r    3
Name: a, dtype: int32

每一行都减去第一行(按行进行广播)

a3-s1
    q   w   e   r
a   0   0   0   0
b   4   4   4   4
c   8   8   8   8

取出q这一列

s2 = a3['q']
s2
a    0
b    4
c    8
Name: q, dtype: int32

默认是行 axis=1,指定 axis='index'axis=0,按列进行广播(a3所有列分别减去第q列)

a3.sub(s2,axis='index')
    q   w   e   r
a   0   1   2   3
b   0   1   2   3
c   0   1   2   3
a3.sub(s2,axis=0)
    q   w   e   r
a   0   1   2   3
b   0   1   2   3
c   0   1   2   3
a3.sub(s2)
    a   b   c   e   q   r   w
a   NaN NaN NaN NaN NaN NaN NaN
b   NaN NaN NaN NaN NaN NaN NaN
c   NaN NaN NaN NaN NaN NaN NaN

Original: https://blog.csdn.net/weixin_45499440/article/details/120995740
Author: 芒果去核
Title: pandas的对齐运算

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/741904/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【计算机视觉】基于Python—OpenCV的手势识别详解(一)

    文章目录 更新日记 前言 前期准备 识别手部模型 识别视频输入方法 手势识别方法 完整代码 结语 更新日记 更新日记:2022.04.18:应各位网友需求,已mp库更新后的手部识别…

    Python 2023年9月27日
    050
  • 1.15 通过某个字段将记录分组

    您有一个词典或一系列实例,然后希望根据特定字段对迭代访问进行分组。 [En] You have a dictionary or a sequence of instances, a…

    Python 2023年5月24日
    065
  • Django项目练习(七)——自制视频上传&转码&存入七牛云

    自制视频功能开发 * – 自制视频功能开发需求 – ffmpeg知识 – 一、把视频传到后台 – 二、视频转码(容器转换) &#82…

    Python 2023年8月5日
    055
  • 字符串的应用-

    1.2.1 string.isspace() 如果string中只包含空格,则返回true 1.2.2 string.isalnum() 如果string至少有一个字符并且所有字符…

    Python 2023年11月3日
    032
  • flask上传图片上传文件

    flask上传图片上传文件 1.导入要获取到系统其他的文件导入os库导入时间库 用后来的时间命名 先把第一次写的代码都放上来(我会一一讲解,后面还有完善) from datetim…

    Python 2023年8月13日
    039
  • Python 交互式解释器的二三事

    学 Python 不知道何时起成了一种风尚。这里,我也随便聊聊跟Python 的交互式解释器的几个有意思的小问题。 如何进入 Python 交互解释器? 当你安装好 Python …

    Python 2023年5月24日
    046
  • pandas 数据处理-Group by操作

    使用 “group by” 方式我们通常会有以下一个或几个步骤: Splitting:根据某一准则对数据分组 Applying :对每一分组数据运用某个方法…

    Python 2023年8月15日
    058
  • 人类记忆系统之谜,也许就是这么回事儿

    本文发布于开发游戏的老王的知乎 |CSDN 博客全文约7000字 推荐阅读时长25分钟 大脑被认为是迄今为止这个世界上,人类已知最复杂且最神秘的系统,所以在探索大脑的时候,没有确凿…

    Python 2023年9月27日
    055
  • Python中requirements.txt文件的作用

    很多 Python 项目中经常会包含一个 requirements.txt 文件,里面内容是项目的依赖包及其对应版本号的信息列表,即项目依赖关系清单,其作用是用来重新构建项目所需要…

    Python 2023年8月11日
    043
  • 线性回归,梯度下降法,拟合一次函数

    1、生成5阶单位矩阵 import numpy as np np.identity(5)###任选一&#x…

    Python 2023年8月27日
    066
  • 端水or信仰?ChatGPT“点评”Web3未来

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月4日
    047
  • Flask入门学习教程

    Flask学习 文章目录 Flask学习 1.简介 2.安装 3.最小的应用 4.路由 5.变量规则 6.URL构建 7.HTTP方法 8.文件存放 9.渲染模板 10.Reque…

    Python 2023年8月2日
    065
  • Host请求头在虚拟主机服务多网域服务中的关键作用

    先重温一下什么叫反向代理,正向代理。鹅厂二面,nginx回忆录 所谓正向,反向代理取决于代理的是 出站请求,还是 入站请求。 正向代理: 代理的出站请求, 客户端能感知到代理程序,…

    Python 2023年10月23日
    061
  • python函数之内置函数 模块

    abs 绝对值函数 round 四舍五入 奇进偶不进 n.5的情况特定发生 sum 计算一个序列得和 max 获取一个序列里边的最大值 min 获取一个序列里边的最小值 max /…

    Python 2023年11月9日
    040
  • 使用Pipeline抽象业务生命周期流程

    上篇关于流程引擎的文章还是快两年以前的《微服务业务生命周期流程管控引擎》,这中间各种低代码平台层出不穷,虽然有些仅仅是OA+表单的再度包装,但有些的确是在逻辑和操作单元层面进行了真…

    Python 2023年10月22日
    036
  • Django——路由配置

    1 概念介绍 1.1 视图函数 1.2 主路由 2 实操 2.1 字符串匹配 2.2 path转换器 2.3 正则匹配 1.1 视图函数 视图函数是用于接收一个浏览器请求并通过Ht…

    Python 2023年8月6日
    048
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球