类似于numpy数组,我们也可以对Series数组进行一元或者二元的数学运算,甚至可以直接使用numpy中的方法。对于一元运算比较简单,遍历数据中的非NaN数据,按照运算规则进行计算然后返回给一个新的Series数组即可,比如最简单的标积;而对于二元运算,如果index一致,则可以按照规则进行运算,如果不一致,则返回NaN数据,比如例子中的add。
我们可以使用以下代码进行演示:
import pandas as pd
import numpy as np
dict_data1 = {
"Beijing":1000,
"Shanghai":2000,
"Shenzhen":500
}
dict_data2 = {
"Beijing":1100,
"Hangzhou":2100,
"Shenzhen":510
}
index_list = ["Guangzhou","Hangzhou","Beijing","Shenzhen"]
data1 = pd.Series(dict_data1,index = index_list)
data2 = pd.Series(dict_data2,index = index_list)
print(2*data1)
print(data1*data2)
print(np.square(data1))
print(data1)
print(np.add(data1,data2))
运行以上代码,我们可以得到以下结果:
Guangzhou NaN
Hangzhou NaN
Beijing 2000.0
Shenzhen 1000.0
dtype: float64
Guangzhou NaN
Hangzhou NaN
Beijing 1100000.0
Shenzhen 255000.0
dtype: float64
Guangzhou NaN
Hangzhou NaN
Beijing 1000000.0
Shenzhen 250000.0
dtype: float64
Guangzhou NaN
Hangzhou NaN
Beijing 1000.0
Shenzhen 500.0
dtype: float64
Guangzhou NaN
Hangzhou NaN
Beijing 2100.0
Shenzhen 1010.0
dtype: float64
[Finished in 5.3s]
本质上,我们可以将Series的二元运算看成是两个数据库之间相同index元素对应的数据之间的运算。