import pandas as pd
s1=pd.Series([7.3,-2.5,3.4,1.5],index=list('acde'))
s2=pd.Series([-2.1,3.6,-1.5,4,3.1],index=list('acefg'))
s1
# a 7.3# c -2.5# d 3.4# e 1.5# dtype: float64
s2
# a -2.1# c 3.6# e -1.5# f 4.0# g 3.1# dtype: float64
s1+s2
# a 5.2# c 1.1# d NaN# e 0.0# f NaN# g NaN# dtype: float64
自动的数据对齐操作在不重叠的索引处引入了NaN值,缺失值会在算数运算过程中传播。
对于DataFrame,对齐操作会同时发生在行和列上:
import pandas as pd
import numpy as np
df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=list('bcd'),index=['ohio','texas','colorado'])
df2=pd.DataFrame(np.arange(12.).reshape(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])
frame=pd.DataFrame(np.arange(12.).reshape(4,3),
columns=list('bde'),
index=['utah','ohio','texas','oregon'])
series=frame.ix[0]# b 0.0# d 1.0# e 2.0# Name: utah, dtype: float64
frame
b
d
e
utah
0.0
1.0
2.0
ohio
3.0
4.0
5.0
texas
6.0
7.0
8.0
oregon
9.0
10.0
11.0
frame-series
b
d
e
utah
0.0
0.0
0.0
ohio
3.0
3.0
3.0
texas
6.0
6.0
6.0
oregon
9.0
9.0
9.0
series2=pd.Series(range(3),index=['b','e','f'])# b 0# e 1# f 2# dtype: int64
frame+series2