算术运算与数据对齐
Pandas执行算术运算时,会先按照索引进行对齐,对齐以后再进行相应的运算,没有对齐的位置会用NaN进行补齐。其中,Series是按行索引对齐的,DataFrame是按行索引、列索引对齐的。
假设有两个Series对象,创建它们的示例代码如下。
In [45]: obj_one = pd.Series(range(10, 13), index=range(3))
obj_one
Out[45]:
0 10
1 11
2 12
dtype: int64
In [46]: obj_two = pd.Series(range(20, 25), index=range(5))
obj_two
Out[46]:
0 20
1 21
2 22
3 23
4 24
dtype: int32
上述示例中创建了两个Series对象:obj_one和obj_two,从输出结果可以看出,obj_one比obj_two少两行数据。
如果要对obj_one与obj_two进行加法运算,则会将它们按照索引先进行对齐,对齐的位置进行加法运算,没有对齐的位置使用NAN值进行填充,具体代码如下。
In [47]: obj_one + obj_two # 执行相加运算
Out[47]:
0 30.0
1 32.0
2 34.0
3 NaN
4 NaN
dtype: float64
如果希望不使用NAN填充缺失数据,则可以在调用add方法时提供fill_value参数的值,fill_value将会使用对象中存在的数据进行补充,具体示例代码如下。
In [48]: obj_one.add(obj_two, fill_value = 0) # 执行加法运算,补充缺失值
Out[48]:
0 30.0
1 32.0
2 34.0
3 23.0
4 24.0
dtype: float64
当然其他的算术运算也是类似的,这里就不再过多赘述了。