Python Pandas数据格式:传递索引和iloc的区别

时间:2016-10-15 09:04:37

标签: python pandas dictionary

这是样本数据:

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]之间有什么区别?

虽然结果相同,何时使用哪个?

1 个答案:

答案 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

Documentation州:

.iloc主要是基于整数位置(从轴的0到长度-1),但也可以与布尔数组一起使用。如果请求的索引器超出范围,.iloc将引发IndexError,除了允许越界索引的切片索引器。 (这符合python / numpy切片语义)。允许的输入是:

  • 一个整数,例如5
  • 整数列表或数组[4,3,0]
  • 具有整数1:7
  • 的切片对象
  • 布尔数组
  • 具有一个参数的可调用函数(调用 Series,DataFrame 或面板)并返回索引的有效输出(其中一个 以上)

这就是为什么不能将[]运算符用于数据框对象的原因。在涉及数据框架和多维系列时,只能使用iloc。