pandas 1.4.2

.iloc[] is primarily integer position based (from 0 to length-1 of the axis), but may also be used with a boolean array.

Allowed inputs are:

.iloc will raise IndexError if a requested indexer is out-of-bounds, except slice indexers which allow out-of-bounds indexing (this conforms with python/numpy slice semantics).

See more at Selection by Position <indexing.integer> .

Purely integer-location based indexing for selection by position.

See Also

DataFrame.iat

Fast integer location scalar accessor.

DataFrame.loc

Purely label-location based indexer for selection by label.

Series.iloc

Purely integer-location based indexing for selection by position.

Examples

This example is valid syntax, but we were not able to check execution
>>> 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 = pd.DataFrame(mydict)
... df a b c d 0 1 2 3 4 1 100 200 300 400 2 1000 2000 3000 4000

Indexing just the rows

With a scalar integer.

This example is valid syntax, but we were not able to check execution
>>> type(df.iloc[0])
<class 'pandas.core.series.Series'>
This example is valid syntax, but we were not able to check execution
>>> df.iloc[0]
a    1
b    2
c    3
d    4
Name: 0, dtype: int64

With a list of integers.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[[0]]
   a  b  c  d
0  1  2  3  4
This example is valid syntax, but we were not able to check execution
>>> type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
This example is valid syntax, but we were not able to check execution
>>> df.iloc[[0, 1]]
     a    b    c    d
0    1    2    3    4
1  100  200  300  400

With a slice object.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[:3]
      a     b     c     d
0     1     2     3     4
1   100   200   300   400
2  1000  2000  3000  4000

With a boolean mask the same length as the index.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[[True, False, True]]
      a     b     c     d
0     1     2     3     4
2  1000  2000  3000  4000

With a callable, useful in method chains. The :None:None:`x` passed to the lambda is the DataFrame being sliced. This selects the rows whose index label even.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[lambda x: x.index % 2 == 0]
      a     b     c     d
0     1     2     3     4
2  1000  2000  3000  4000

Indexing both axes

You can mix the indexer types for the index and columns. Use : to select the entire axis.

With scalar integers.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[0, 1]
2

With lists of integers.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[[0, 2], [1, 3]]
      b     d
0     2     4
2  2000  4000

With slice objects.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[1:3, 0:3]
      a     b     c
1   100   200   300
2  1000  2000  3000

With a boolean array whose length matches the columns.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[:, [True, False, True, False]]
      a     c
0     1     3
1   100   300
2  1000  3000

With a callable function that expects the Series or DataFrame.

This example is valid syntax, but we were not able to check execution
>>> df.iloc[:, lambda df: [0, 2]]
      a     c
0     1     3
1   100   300
2  1000  3000
See :

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


File: /pandas/core/indexing.py#1332
type: <class 'type'>
Commit: