I have the dataframe shown below. I need to get the scalar value of column B, dependent on the value of A (which is a variable in my script). I'm trying the loc() function but it returns a Series instead of a scalar value. How do I get the scalar value()?
>>> x = pd.DataFrame({'A' : [0,1,2], 'B' : [4,5,6]}) >>> x A B 0 0 4 1 1 5 2 2 6 >>> x.loc[x['A'] == 2]['B'] 2 6 Name: B, dtype: int64 >>> type(x.loc[x['A'] == 2]['B']) <class 'pandas.core.series.Series'>
You can set cell value of pandas dataframe using df.at[row_label, column_label] = 'Cell Value'. It is the fastest method to set the value of the cell of the pandas dataframe. Dataframe at property of the dataframe allows you to access the single value of the row/column pair using the row and column labels.
Example #1: Use Series. get() function to get the value for the passed index label in the given series object. Output : Now we will use Series.
loc[] to find Row index which column match value. The pandas dataframe. loc method is used to access the row and column by index(label) and column name that is passed by the column label(Marks) to df. loc[df['Marks'] = 100 and it will return the rows which satisfy the given condition.
First of all, you're better off accessing both the row and column indices from the .loc
:
x.loc[x['A'] == 2, 'B']
Second, you can always get at the underlying numpy matrix using .values
on a series or dataframe:
In : x.loc[x['A'] == 2, 'B'].values[0] Out: 6
Finally, if you're not interested in the original question's "conditional indexing", there are also specific accessors designed to get a single scalar value from a DataFrame: dataframe.at[index, column]
or dataframe.iat[i, j]
(these are similar to .loc[]
and .iloc[]
but designed for quick access to a single value).
elaborating on @ShineZhang comment:
x.set_index('A').at[2, 'B']
6
pd.__version__
u'0.22.0'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With