首页 > Pandas 阅读数:10

Pandas Series对象的二元运算精讲

Series 的二元运算和 Numpy 中一元数组的运算相似。示例代码如下。
In [1]: import pandas as pd
In [2]: a=pd.Series([0,1,2,3,4,5])
In [3]: b=pd.Series([-5,-4,-3,-2,-1,0])

1. Series序列数学基本运算

与 Numpy 中的 add 方法类似,计算两个序列的和。
In [4]: a.add(b)  # 加法
Out[4]: 
0   -5
1   -3
2   -1
3    1
4    3
5    5
dtype: int64
与 Numpy 中的 substract 方法类似,计算两个序列的差。
In [5]: a.sub(b)  # 减法
Out[5]: 
0    5
1    5
2    5
3    5
4    5
5    5
dtype: int64
与 Numpy 中的 multiply 方法类似,计算两个序列的乘积。
In [6]: a.mul(b)  # 乘法
Out[6]: 
0    0
1   -4
2   -6
3   -6
4   -4
5    0
dtype: int64 
与 Numpy 中的 divide 方法类似,计算两个序列的商。
In [7]: a.div(b)  # 除法
Out[7]:
0   -0.000000
1   -0.250000
2   -0.666667
3   -1.500000
4   -4.000000
5         inf
dtype: float64
取商的整数部分。
In [8]: a.floordiv(b)  # 向下取整除法
Out[8]: 
0    0
1   -1
2   -1
3   -2
4   -4
5    0
dtype: int64
与 Numpy 中的 divmod 方法类似,取模。
In [9]: a.mod(b)  # 取模
Out[9]: 
0    0
1   -3
2   -1
3   -1
4    0
5    0
dtype: int64

2. Series比较序列的大小

lt 方法用来判断一个序列的值是否小于另一个序列的值。因为 a 序列所有的值都大于 b 序列所有的值,所以返回的都是False。
In [10]: a.lt(b)  # 是否小于另一个序列的值
Out[10]: 
0    False
1    False
2    False
3    False 
4    False
5    False
dtype: bool
gt 方法用来判断一个序列的值是否大于另一个序列的值。因为a序列所有的值都大于b序列所有的值,所以返回的都是True。
In [11]: a.gt(b)  # 是否大于另一个序列的值
Out[11]: 
0    True
1    True
2    True
3    True
4    True
5    True
dtype: bool
le 方法用来判断一个序列的值是否小于等于另一个序列的值。因为 a 序列所有的值都大于 b 序列所有的值,所以返回的都是 False。
In [12]: a.le(b)  # 是否小于等于另一个序列的值
Out[12]: 
0    False
1    False
2    False
3    False
4    False
5    False
dtype: bool
ge 方法用来判断一个序列的值是否大于等于另一个序列的值。因为 a 序列所有的值都大于 b 序列所有的值,所以返回的都是 True。
In [13]: a.ge(b)  # 是否大于等于另一个序列的值
Out[13]: 
0    True
1    True
2    True
3    True
4    True
5    True
dtype: bool
ne 方法用来判断一个序列的值是否不等于另一个序列的值。因为 a 序列所有的值都不等于 b 序列的值,所以返回的都是 True。
值都不等于b序列的值,所以返回的都是True。
In [14]: a.ne(b)  # 是否不等于另一个序列的值
Out[14]: 
0    True
1    True
2    True
3    True
4    True
5    True
dtype: bool
eq 方法用来判断一个序列的值是否等于另一个序列的值。因为a序列所有的值都不等于b序列的值,所以返回的都是False。
In [15]: a.eq(b)  # 是否等于另一个序列的值
Out[15]: 
0    False
1    False
2    False
3    False
4    False
5    False
dtype: bool

3. Series序列的其他运算

与 Numpy 中的 dot 方法类似,计算两个序列的点积。
In [16]: a.dot(b)  # 点乘
Out[16]: -20
与 Numpy 中的 absolute 方法类似,计算序列中所有值的绝对值。
In [17]: b.abs()
Out[17]: 
0    5
1    4
2    3
3    2
4    1
5    0
dtype: int64
序列的加法是将每一个元素都加上该数。
In [18]: c=a+0.5
In [19]: c
Out[19]: 
0    0.5
1    1.5
2    2.5
3    3.5
4    4.5
5    5.5
dtype: float64
与 Numpy 中的 around 方法类似,对序列所有元素取整。
In [20]: c.round()  # 取整
Out[20]: 
0    0.0
1    2.0
2    2.0
3    4.0
4    4.0
5    6.0
dtype: float64