问题描述
在两个不同的索引化对象之间进行操作时,因为索引不完全相同导致算术后对象中的对应值缺失。
例:
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