extract column value based on another column pandas dataframe

I am kind of getting stuck on extracting value of one variable conditioning on another variable. For example, the following dataframe:

A B p1 1 p1 2 p3 3 p2 4 

How can I get the value of A when B=3? Every time when I extracted the value of A, I got an object, not a string.

2

6 Answers

You could use loc to get series which satisfying your condition and then iloc to get first element:

In [2]: df Out[2]: A B 0 p1 1 1 p1 2 2 p3 3 3 p2 4 In [3]: df.loc[df['B'] == 3, 'A'] Out[3]: 2 p3 Name: A, dtype: object In [4]: df.loc[df['B'] == 3, 'A'].iloc[0] Out[4]: 'p3' 
12

You can try query, which is less typing:

df.query('B==3')['A'] 
3

df[df['B']==3]['A'], assuming df is your pandas.DataFrame.

4

Use df[df['B']==3]['A'].values[0] if you just want item itself without the brackets

3

Edited: What I described below under Previous is chained indexing and may not work in some situations. The best practice is to use loc, but the concept is the same:

df.loc[row, col] 

row and col can be specified directly (e.g., 'A' or ['A', 'B']) or with a mask (e.g. df['B'] == 3). Using the example below:

df.loc[df['B'] == 3, 'A'] 

Previous: It's easier for me to think in these terms, but borrowing from other answers. The value you want is located in a dataframe:

df[*column*][*row*] 

where column and row point to the values you want returned. For your example, column is 'A' and for row you use a mask:

df['B'] == 3 

To get the first matched value from the series there are several options:

df['A'][df['B'] == 3].values[0] df['A'][df['B'] == 3].iloc[0] df['A'][df['B'] == 3].to_numpy()[0] 
male_avgtip=(tips_data.loc[tips_data['sex'] == 'Male', 'tip']).mean() 

I have also worked on this clausing and extraction operations for my assignment.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like