Search code examples
pythonpandasdataframeserieshead

Get first element of Series without knowing the index


Is there any way to access the first element of a Series without knowing its index?

Let's say I have the following Series:

import pandas as pd

key='MCS096'
SUBJECTS = pd.DataFrame(
    {
        "ID": pd.Series([146], index=[145]),
        "study": pd.Series(["MCS"], index=[145]),
        "center": pd.Series(["Mag"], index=[145]),
        "initials": pd.Series(["MCS096"], index=[145]),
    }
)

Print out SUBJECTS:

print(SUBJECTS[SUBJECTS.initials==key]['ID'])
>>> 145    146
>>> Name: ID, dtype: int64

How can I get the value 146 here without using index 145?


Solution

  • Use iloc to access by position (rather than label):

    In [11]: df = pd.DataFrame([[1, 2], [3, 4]], ['a', 'b'], ['A', 'B'])
    
    In [12]: df
    Out[12]: 
       A  B
    a  1  2
    b  3  4
    
    In [13]: df.iloc[0]  # first row in a DataFrame
    Out[13]: 
    A    1
    B    2
    Name: a, dtype: int64
    
    In [14]: df['A'].iloc[0]  # first item in a Series (Column)
    Out[14]: 1