Series第二讲 二元运算

2020-09-16  本文已影响0人  butters001

Series第二讲 二元运算

二元运算方法总览

详细介绍

先来创建两个简单的Series

In [5]: a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])            

In [6]: b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])       

In [7]: a                                                                       
Out[7]: 
a    1.0
b    1.0
c    1.0
d    NaN
dtype: float64

In [8]: b                                                                       
Out[8]: 
a    1.0
b    NaN
d    1.0
e    NaN
dtype: float64
  1. Series.add(other, level=None, fill_value=None, axis=0):两个Series相加

参数介绍:

此处 a.add(b) 和 a + b 具有相同效果

In [9]: a.add(b)                                                                
Out[9]: 
a    2.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64

In [10]: a+b                                                                    
Out[10]: 
a    2.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64

可以看出:对应索引位置的数值相加,无相同索引、nan值相加的位置都为nan。

🌟tips🌟:a.radd(b) 代表的意思是 b.add(a),即:b + a。r这个字母是right的意思。其他带r的操作符同理。

  1. Series.sub(other[, level, fill_value, axis]):表示Series - other
In [11]: a.sub(b)                                                               
Out[11]: 
a    0.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.mul(参数同上):表示Series * other
In [51]: a.mul(b)                                                               
Out[51]: 
a    1.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.div(参数同上):表示Series / other
In [12]: a.div(b)                                                               
Out[12]: 
a    1.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.truediv(参数同上):效果等同于 Series.div
  1. Series.floordiv(参数同上):表示Series // other

x//y 在 python3 中表示两数相除,结果向下取整(舍弃小数部分)

In [13]: a.floordiv(b)                                                          
Out[13]: 
a    1.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.mod(参数同上):表示Series % other

x%y 在 python3 中表示两数相除,取结果的余数部分

In [14]: a.mod(b)                                                               
Out[14]: 
a    0.0
b    NaN
c    NaN
d    NaN
e    NaN
dtype: float64
  1. Series.pow(参数同上):表示Series ** other

x**y 在 python3 中表示x的y次方

In [19]: a.pow(b)                                                               
Out[19]: 
a    1.0
b    1.0
c    1.0
d    NaN
e    NaN
dtype: float64

注意⚠️:这里有个细节

1 ** np.nan 结果是 1.0
其他数 2 ** np.nan 结果是 nan
所以 1 的 nan 次方比较特殊,结果并不是 nan
  1. Series.combine(other, func[, fill_value]):组合两个Series

参数介绍:

In [32]: a.combine(other=b, func=max)                                           
Out[32]: 
a    1.0
b    1.0
c    1.0
d    NaN
e    NaN
dtype: float64

说明:这个方法的意思是 每个相同索引的值一同进入func函数中(这里是max),返回func处理后的结果。

  1. Series.combine_first(other):合并Series,优先取Series的值,如果没有再取other的值
In [33]: a.combine_first(b)                                                     
Out[33]: 
a    1.0
b    1.0
c    1.0
d    1.0
e    NaN
dtype: float64
  1. Series.round([decimals]):保留几位小数

效果等同于 python 里的round函数

参数介绍:

In [34]: s = pd.Series([0.1, 1.3, 2.7])                               
In [35]: s.round()                                                              
Out[35]: 
0    0.0
1    1.0
2    3.0
dtype: float64
  1. Series.lt(other[, level, fill_value, axis]):表示Series < other

相同索引位置的值进行比较,返回bool值。
le表示<=

In [36]: a.lt(b)                                                                
Out[36]: 
a    False
b    False
c    False
d    False
e    False
dtype: bool
  1. Series.gt(参数同上):表示Series > other

ge表示>=

In [38]: a.ge(b)                                                                
Out[38]: 
a     True
b    False
c    False
d    False
e    False
dtype: bool
  1. Series.eq(参数同上):表示Series == other

ne表示!=

In [39]: a.eq(b)                                                                
Out[39]: 
a     True
b    False
c    False
d    False
e    False
dtype: bool 

注意⚠️:np.nan != np.nan

  1. Series.product(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs:所有数值的乘积

表示此Series里所有数值的乘积,Series.prod()等效

参数介绍:

In [44]: a.prod()                                                               
Out[44]: 1.0

In [46]: a.prod(min_count=4)                                                    
Out[46]: nan
  1. Series.dot(other):表示矩阵乘法

也可以表示为 Series @ other

In [49]: s.dot(df)                                                              
Out[49]: 
0    24
1    14
dtype: int64

In [50]: s@df                                                                   
Out[50]: 
0    24
1    14
dtype: int64

继续 坚持 ✊ ✊ ✊!!!

上一篇 下一篇

猜你喜欢

热点阅读