理论:
知识要点
Series的运算:
对齐操作发生在索引上
DataFrame的运算:
对齐操作会同时发生在行和列上,注意:Series和DataFrame操作时,Series被看作行数据(index被看作列),和DataFrame中的每行数据进行计算。
Series和DataFrame的对齐和运算方式:
索引与数据的对应关系仍保持在数组运算的结果中。
若是没有对齐的位置,则运算结果位置默认补NaN
实验:
第七节运算与对齐
In [1]:
import pandas as pd
import numpy as np
Series间运算
In [3]:
ser1 = pd.Series(range(10,20),index=range(10))
ser1
Out[3]:
0 10 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 dtype: int64
In [4]:
ser2 = pd.Series(range(20,25),index = range(5))
ser2
Out[4]:
0 20 1 21 2 22 3 23 4 24 dtype: int64
In [5]:
ser1 + ser2
Out[5]:
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间的运算
In [6]:
df1 = pd.DataFrame(np.ones((2,2)),columns=['a','b'])
df1
Out[6]:
a | b | |
---|---|---|
0 | 1.0 | 1.0 |
1 | 1.0 | 1.0 |
In [9]:
df2 = pd.DataFrame(np.ones((3, 3)),columns=['a','b','c'])
df2
Out[9]:
a | b | c | |
---|---|---|---|
0 | 1.0 | 1.0 | 1.0 |
1 | 1.0 | 1.0 | 1.0 |
2 | 1.0 | 1.0 | 1.0 |
In [10]:
df1 + df2
Out[10]:
a | b | c | |
---|---|---|---|
0 | 2.0 | 2.0 | NaN |
1 | 2.0 | 2.0 | NaN |
2 | NaN | NaN | NaN |
In [11]:
ser2
Out[11]:
0 20 1 21 2 22 3 23 4 24 dtype: int64
In [12]:
df1
Out[12]:
a | b | |
---|---|---|
0 | 1.0 | 1.0 |
1 | 1.0 | 1.0 |
In [13]:
ser2 + df1
Out[13]:
a | b | 0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|---|---|
0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
In [14]:
ser3 = pd.Series([1,2,3],index=['a','b','c'])
ser3
Out[14]:
a 1 b 2 c 3 dtype: int64
In [15]:
ser3 + df1
Out[15]:
a | b | c | |
---|---|---|---|
0 | 2.0 | 3.0 | NaN |
1 | 2.0 | 3.0 | NaN |
In [ ]: