pandas库的数据类型运算

pandas库的数据类型运算

算数运算法则

  • 根据行列索引,补齐运算(不同索引不运算,行列索引相同才运算),默认产生浮点数
  • 补齐时默认填充NaN空值
  • 二维和一维,一维和0维之间采用广播运算(低维元素与每一个高维元素运算)
  • 采用 +-*/符号的二元运算会产生新的对象
import pandas as pd
import numpy as np

a = pd.DataFrame(np.arange(12).reshape(3, 4))
a
0123
00123
14567
2891011
b = pd.DataFrame(np.arange(20).reshape(4, 5))
b
01234
001234
156789
21011121314
31516171819
# 维度相同, 行列内元素个数不同的运算, 自动补齐, 缺项NaN
a + b
01234
00.02.04.06.0NaN
19.011.013.015.0NaN
218.020.022.024.0NaN
3NaNNaNNaNNaNNaN
a * b
01234
00.01.04.09.0NaN
120.030.042.056.0NaN
280.099.0120.0143.0NaN
3NaNNaNNaNNaNNaN

除了使用+-*/,也可使用方法形式,好处是可以增加可选参数

  • .add(d,**argws) 类型间加法运算,可选参数
  • .sub(d,**argws) 类型间减法运算,可选参数
  • .mul(d,**argws) 类型间乘法运算,可选参数
  • .div(d,**argws) 类型间除法运算,可选参数
b.add(a,fill_value = 100) # 将a和b之间的缺失元素用100补齐并参加与运算
01234
00.02.04.06.0104.0
19.011.013.015.0109.0
218.020.022.024.0114.0
3115.0116.0117.0118.0119.0
a.mul(b,fill_value = 0)
01234
00.01.04.09.00.0
120.030.042.056.00.0
280.099.0120.0143.00.0
30.00.00.00.00.0

不同维度运算

b = pd.DataFrame(np.arange(20).reshape(4, 5))
b
01234
001234
156789
21011121314
31516171819
c = pd.Series(np.arange(4))
c
0    0
1    1
2    2
3    3
dtype: int32
c - 10
0   -10
1    -9
2    -8
3    -7
dtype: int32
b - c # b的每一行都与c运算一遍, 二维和一维运算默认在轴1(行)发生
01234
00.00.00.00.0NaN
15.05.05.05.0NaN
210.010.010.010.0NaN
315.015.015.015.0NaN
b.sub(c,axis=0) # 指定用 列 参与运算
01234
001234
145678
289101112
31213141516

比较运算法则

  • 比较运算只能比较相同索引的元素,不进行补齐(尺寸不同会报错)
  • 二维和一维/一维和零维间为广播运算
  • 采用>< >= <= – !=等符号进行的二元运算产生布尔对象
a = pd.DataFrame(np.arange(12).reshape(3, 4))
a
0123
00123
14567
2891011
d = pd.DataFrame(np.arange(12, 0, -1).reshape(3, 4))
d
0123
01211109
18765
24321
a > d # bool值表
0123
0FalseFalseFalseFalse
1FalseFalseFalseTrue
2TrueTrueTrueTrue
a == d
0123
0FalseFalseFalseFalse
1FalseFalseTrueFalse
2FalseFalseFalseFalse
b = pd.DataFrame(np.arange(12).reshape(3, 4))
c = pd.Series(np.arange(4))

a > c
0123
0FalseFalseFalseFalse
1TrueTrueTrueTrue
2TrueTrueTrueTrue
c > 0
0    False
1     True
2     True
3     True
dtype: bool
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值