# How to take a scalar of a certain value in another column based on the value of a certain column in a Dataframe?

I have a dataframe with two columns `A` and `B`. I want to take the scalar of column `B` based on the value of column `A`. I used `loc` and `.value` ``

My data volume is relatively small, the main problem is to see whether the syntax of the code is correct. `.value` seems to be deprecated.

```import pandas as pd
import numpy as np

df = pd.DataFrame()
df[['A', 'B']] = pd.DataFrame(np.arange(10).reshape((5, 2)))
df1 = df.loc[df['A'] == 4, 'B'].values
print(df)
print()
print(df1)
```

The result is

```5
```

Can this code be optimized?

```df1 = df.loc[df['A'] == 4, 'B'].values
```

## Answer

If you need optimalized with return some value if condition failed use `next` with `iter`:

```a = next(iter(df.loc[df['A'] == 4, 'B']), 'no match')
print (a)
5

a = next(iter(df.loc[df['A'] == 1000, 'B']), 'no match')
print (a)
no match
```

If values always matching is possible use `Series.to_numpy`, but this failed if no match, so better not use:

```df.loc[df['A'] == 4, 'B'].to_numpy()
#but this failed
#df.loc[df['A'] == 1000, 'B'].to_numpy()
```