# Pandas的对齐运算

Series的对齐运算

### 1. Series 按行、索引对齐

``s1 = pd.Series(range(10, 20), index = range(10)) s2 = pd.Series(range(20, 25), index = range(5))  print('s1: ' ) print(s1)  print('')   print('s2: ') print(s2) ``

``s1:  0    10 1    11 2    12 3    13 4    14 5    15 6    16 7    17 8    18 9    19 dtype: int64  s2:  0    20 1    21 2    22 3    23 4    24 dtype: int64 ``

### 2. Series的对齐运算

``# Series 对齐运算 s1 + s2 ``

``0    30.0 1    32.0 2    34.0 3    36.0 4    38.0 5     NaN 6     NaN 7     NaN 8     NaN 9     NaN dtype: float64 ``

DataFrame的对齐运算

### 1. DataFrame按行、列索引对齐

``df1 = pd.DataFrame(np.ones((2,2)), columns = ['a', 'b']) df2 = pd.DataFrame(np.ones((3,3)), columns = ['a', 'b', 'c'])  print('df1: ') print(df1)  print('')  print('df2: ') print(df2) ``

``df1:       a    b 0  1.0  1.0 1  1.0  1.0  df2:       a    b    c 0  1.0  1.0  1.0 1  1.0  1.0  1.0 2  1.0  1.0  1.0 ``

### 2. DataFrame的对齐运算

``# DataFrame对齐操作 df1 + df2 ``

``     a    b   c 0  2.0  2.0 NaN 1  2.0  2.0 NaN 2  NaN  NaN NaN ``

### 1. fill_value

``使用add, sub, div, mul的同时，  通过fill_value指定填充值，未对齐的数据将和填充值做运算 ``

``print(s1) print(s2) s1.add(s2, fill_value = -1)  print(df1) print(df2) df1.sub(df2, fill_value = 2.) ``

``# print(s1) 0    10 1    11 2    12 3    13 4    14 5    15 6    16 7    17 8    18 9    19 dtype: int64  # print(s2) 0    20 1    21 2    22 3    23 4    24 dtype: int64  # s1.add(s2, fill_value = -1) 0    30.0 1    32.0 2    34.0 3    36.0 4    38.0 5    14.0 6    15.0 7    16.0 8    17.0 9    18.0 dtype: float64   # print(df1)      a    b 0  1.0  1.0 1  1.0  1.0  # print(df2)      a    b    c 0  1.0  1.0  1.0 1  1.0  1.0  1.0 2  1.0  1.0  1.0   # df1.sub(df2, fill_value = 2.)      a    b    c 0  0.0  0.0  1.0 1  0.0  0.0  1.0 2  1.0  1.0  1.0 ``