之前我们分析过,Series数组有点像是python中列表和字典的融合体,因此除了使用列表来对Series数据进行初始化操作之外,我们也可以使用字典数据结构来进行初始化的参数输入。
我们可以发现,字典的key成为了Series数组的index,字典的value成为了对应的values。
我们也可以在Series数组初始化的时候对index参数进行赋值指定数组的索引名称,这样就存在一个问题了,字典中的key和index参数不一致怎么办?结论是以index参数优先级为高,如果字典中的key在index中出现,那么他对应的key能够生效,如果字典中的key在index中不存在,那么这个字典中的条目将不会被写进Series数组当中,如果index中存在一个字典中不存在的key,那么这个index将被保留,而他的初始值将被赋值为NaN。
为了检测某个值是否为NaN,Series数组还提供了isnull方法来进行判断。这个方法将遍历全部的index,最终返回一个Series数组,里面的value存储着对应的index是否为空。与他对应的是notnull()方法,原理是一样的,只不过返回的布尔值是互为求反的。
我们可以使用以下代码来演示:
import pandas as pd
dict_data = {
"Beijing":1000,
"Shanghai":2000,
"Shenzhen":500
}
data1 = pd.Series(dict_data)
print(data1)
print(data1.isnull())
print(data1.notnull())
index_list = ["Guangzhou","Hangzhou","Beijing","Shenzhen"]
data2 = pd.Series(dict_data,index=index_list)
print(data2)
print(data2.isnull())
print(data2.notnull())
运行以上代码我们可以得到以下的结果:
Beijing 1000
Shanghai 2000
Shenzhen 500
dtype: int64
Beijing False
Shanghai False
Shenzhen False
dtype: bool
Beijing True
Shanghai True
Shenzhen True
dtype: bool
Guangzhou NaN
Hangzhou NaN
Beijing 1000.0
Shenzhen 500.0
dtype: float64
Guangzhou True
Hangzhou True
Beijing False
Shenzhen False
dtype: bool
Guangzhou False
Hangzhou False
Beijing True
Shenzhen True
dtype: bool
[Finished in 5.9s]