这是样本数据:
dict_country_gdp = pd.Series([52056.01781,40258.80862,40034.85063,39578.07441],
index = ['Luxembourg','Norway', 'Japan', 'Switzerland'])
dict_country_gdp[0]
和dict_country_gdp.iloc[0]
之间有什么区别?
虽然结果相同,何时使用哪个?
答案 0 :(得分:1)
当您使用一维系列时,[]或.iloc会给出相同的结果。
一维系列:
import pandas as pd
dict_country_gdp = pd.Series([52056.01781, 40258.80862,40034.85063,39578.07441])
dict_country_gdp
Out[]:
0 52056.01781
1 40258.80862
2 40034.85063
3 39578.07441
dtype: float64
dict_country_gdp[0]
Out[]: 52056.017809999998
dict_country_gdp.iloc[0]
Out[]: 52056.017809999998
多维系列:
dict_country_gdp = pd.Series([52056.01781, 40258.80862,40034.85063,39578.07441],[52056.01781, 40258.80862,40034.85063,39578.07441])
dict_country_gdp
Out[]:
52056.01781 52056.01781
40258.80862 40258.80862
40034.85063 40034.85063
39578.07441 39578.07441
dtype: float64
现在在这种情况下,您无法使用[]运算符访问系列。
dict_country_gdp[0]
Out[]: KeyError: 0.0
dict_country_gdp.iloc[0]
Out[]: 52056.017809999998
iloc在访问多维系列时提供更多控制:
dict_country_gdp[0:2]
Out[]: Series([], dtype: float64)
dict_country_gdp.iloc[0:2]
Out[]:
52056.01781 52056.01781
40258.80862 40258.80862
dtype: float64
.iloc主要是基于整数位置(从轴的0到长度-1),但也可以与布尔数组一起使用。如果请求的索引器超出范围,.iloc将引发IndexError,除了允许越界索引的切片索引器。 (这符合python / numpy切片语义)。允许的输入是:
这就是为什么不能将[]运算符用于数据框对象的原因。在涉及数据框架和多维系列时,只能使用iloc。