首页 > 其他分享 >Pandas中的灵活算数方法

Pandas中的灵活算数方法

时间:2023-02-13 22:22:57浏览次数:42  
标签:1.5 灵活 float64 df s2 s1 算数 dtype Pandas

问题描述

  在两个不同的索引化对象之间进行操作时,因为索引不完全相同导致算术后对象中的对应值缺失。
  例:
  s1:

s1 = pd.Series([7.3, -2.5, 3.4, 1.5], index=['a', 'c', 'd', 'e'])
a    7.3
c   -2.5
d    3.4
e    1.5
dtype: float64

  s2:

s2 = pd.Series([-2.1, 3.6, -1.5, 4, 3.1], index=['a', 'c', 'e', 'f', 'g'])
a   -2.1
c    3.6
e   -1.5
f    4.0
g    3.1
dtype: float64

  这时将s1,s2两个索引相加时,结果为两个索引的并集,如下所示

s1 + s2

  输出为:

a    5.2
c    1.1
d    NaN
e    0.0
f    NaN
g    NaN
dtype: float64

解决方法

  可见将这两个索引添加到一起会导致一些不重叠的位置出现NA值。这时候可以用灵活算数方法并填充缺失值,这里将缺失值填充为0

s1.add(s2, fill_value=0)
a    5.2
c    1.1
d    3.4
e    0.0
f    4.0
g    3.1
dtype: float64

  填充值为1时,为如下效果

s1.add(s2, fill_value=1)
a    5.2
c    1.1
d    4.4
e    0.0
f    5.0
g    4.1
dtype: float64

Dataframe对象同理


灵活算术方法

方法 描述
add, radd 加法(+)
sub, rsub 减法(-)
div, rdiv 除法(/)
floordiv, rfloordiv 整除(//)
mul, rmul 乘法(*)
pow, rpow 幂次方(**)

  这些方法中每一个都有一个以r开头的副本,这些副本方法的参数时翻转的,如下所示:

df = pd.DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd'))
df
	a	  b	    c	  d
0	0.0	  1.0	2.0	  3.0
1	4.0	  5.0	6.0	  7.0
2	8.0	  9.0	10.0  11.0

  对以上对象使用翻转的方法,可以看出以下两个语句的结果是等价的:

1 / df
	a	    b	        c	        d
0	inf	    1.000000	0.500000	0.333333
1	0.250	0.200000	0.166667	0.142857
2	0.125	0.111111	0.100000	0.090909
df.rdiv(1)
	a	    b	        c	        d
0	inf	    1.000000	0.500000	0.333333
1	0.250	0.200000	0.166667	0.142857
2	0.125	0.111111	0.100000	0.090909

标签:1.5,灵活,float64,df,s2,s1,算数,dtype,Pandas
From: https://www.cnblogs.com/ToryRegulus/p/17118051.html

相关文章