maxframe.dataframe.DataFrame.iloc#

property DataFrame.iloc#

基于纯整数位置的索引,用于按位置选择。

.iloc[] 主要基于整数位置(从轴的 0length-1),但也可以与布尔数组一起使用。

允许的输入包括:

  • 一个整数,例如 5

  • 一个整数列表或数组,例如 [4, 3, 0]

  • 一个包含整数的切片对象,例如 1:7

  • 一个布尔数组。

  • 一个带有一个参数(调用的 Series 或 DataFrame)的 callable 函数,并返回有效的索引输出(上述之一)。这在方法链中非常有用,当你没有对调用对象的引用时,但仍希望根据某些值进行选择。

如果请求的索引器超出范围,.iloc 将引发 IndexError,但 slice 索引器允许越界索引(这符合 python/numpy slice 语义)。

更多内容请参见 按位置选择

参见

DataFrame.iat

快速整数位置标量访问器。

DataFrame.loc

基于纯标签位置的索引器,用于按标签选择。

Series.iloc

基于纯整数位置的索引,用于按位置选择。

示例

>>> import maxframe.dataframe as md
>>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
...           {'a': 100, 'b': 200, 'c': 300, 'd': 400},
...           {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
>>> df = md.DataFrame(mydict)
>>> df.execute()
      a     b     c     d
0     1     2     3     4
1   100   200   300   400
2  1000  2000  3000  4000

仅索引行

使用标量整数。

>>> type(df.iloc[0]).execute()
<class 'pandas.core.series.Series'>
>>> df.iloc[0].execute()
a    1
b    2
c    3
d    4
Name: 0, dtype: int64

使用整数列表。

>>> df.iloc[[0]].execute()
   a  b  c  d
0  1  2  3  4
>>> type(df.iloc[[0]]).execute()
<class 'pandas.core.frame.DataFrame'>
>>> df.iloc[[0, 1]].execute()
     a    b    c    d
0    1    2    3    4
1  100  200  300  400

使用 slice 对象。

>>> df.iloc[:3].execute()
      a     b     c     d
0     1     2     3     4
1   100   200   300   400
2  1000  2000  3000  4000

使用与索引长度相同的布尔掩码。

>>> df.iloc[[True, False, True]].execute()
      a     b     c     d
0     1     2     3     4
2  1000  2000  3000  4000

使用可调用对象,在方法链中非常有用。传递给 lambdax 是正在切片的 DataFrame。这将选择索引标签为偶数的行。

>>> df.iloc[lambda x: x.index % 2 == 0].execute()
      a     b     c     d
0     1     2     3     4
2  1000  2000  3000  4000

索引两个轴

你可以混合使用索引器类型来索引行和列。使用 : 来选择整个轴。

使用标量整数。

>>> df.iloc[0, 1].execute()
2

使用整数列表。

>>> df.iloc[[0, 2], [1, 3]].execute()
      b     d
0     2     4
2  2000  4000

使用 slice 对象。

>>> df.iloc[1:3, 0:3].execute()
      a     b     c
1   100   200   300
2  1000  2000  3000

使用长度与列数匹配的布尔数组。

>>> df.iloc[:, [True, False, True, False]].execute()
      a     c
0     1     3
1   100   300
2  1000  3000

使用一个可调用函数,该函数接受 Series 或 DataFrame。

>>> df.iloc[:, lambda df: [0, 2]].execute()
      a     c
0     1     3
1   100   300
2  1000  3000