Position-based selection of a Series
As discussed back in the Basic selection from a DataFrame section, using []
as a selection mechanism does not signal the clearest intent and can sometimes be downright confusing. The fact that ser[42]
selects from a label matching the number 42 and not the 42nd row of a pd.Series
is a common mistake for new users, and such an ambiguity can grow even more complex as you start trying to select two dimensions with the []
operator from a pd.DataFrame
.
To clearly signal that you are trying to select by position instead of by label, you should use pd.Series.iloc
.
How to do it
Let’s create a pd.Series
where we have an index using integral labels that are also non-unique:
ser = pd.Series(["apple", "banana", "orange"], index=[0, 1, 1])
ser
0 apple
1 banana
1 orange
dtype: object
To select a scalar, you can use pd.Series.iloc
with an integer argument:
ser.iloc[1]
banana
...