**Pandas**

*chevron_left*

**Selecting Data Cookbook**

# Getting first row value of a column in Pandas DataFrame

*schedule*Aug 10, 2023

*toc*Table of Contents

*expand_more*

**mathematics behind data science**with 100+ top-tier guides

Start your free 7-days trial now!

To get the first row value of a column in Pandas DataFrame, use the `iloc`

property.

As an example, consider the following DataFrame:

```
df = pd.DataFrame({"A":[3,4],"B":[5,6]}, index=["a","b"])df
A Ba 3 5b 4 6
```

# Solution

To get the first row value of column `B`

:

```
df.iloc[0, df.columns.get_loc("B")]
5
```

# Explanation

Since `iloc`

requires integer index rather than labels, we first get the integer index of column `B`

like so:

```
df.columns.get_loc("B")
1
```

# Anti-pattern

There are other ways of getting the first row value of a column, such as:

```
df.iloc[0]["B"]
5
```

Although this solution looks more concise, a problem arises when we try to perform assignment:

```
df.iloc[0]["B"] = 9 # df may or may not updatedf
A Ba 3 9b 4 6
```

Here, `df.iloc[0]`

is first called and there is no guarantee whether the returned value is a view or a copy (click here to learn more about the difference). We then extract the value at column `B`

using `["B"]`

and perform assignment using `=`

. Since we don't know whether `df.iloc[0]`

is a view or a copy, this assignment may or may not end up updating `df`

. In this particular case, the assignment did update `df`

, but in some other cases, `df`

might not get updated.

To avoid these ambiguous cases, we can directly update the value at a particular entry with a single indexing operation using `iloc`

:

```
df.iloc[0, df.columns.get_loc("B")] = 9 # df will always be updateddf
A Ba 3 9b 4 6
```