df:
JavaScript
x
8
1
no fruit price city
2
1 apple 10 Pune
3
2 apple 20 Mumbai
4
3 orange 5 Nagpur
5
4 orange 7 Delhi
6
5 Mango 20 Bangalore
7
6 Mango 15 Chennai
8
Now I want to get city name where “fruit= orange and price =5”
JavaScript
1
2
1
df.loc[(df['fruit'] == 'orange') & (df['price'] == 5) , 'city'].iloc[0]
2
is not working and giving error as:
JavaScript
1
2
1
IndexError: single positional indexer is out-of-bounds
2
Versions used: Python 3.5
Advertisement
Answer
You could create masks step-wise and see how they look like:
JavaScript
1
14
14
1
import pandas as pd
2
3
df = pd.DataFrame([{'city': 'Pune', 'fruit': 'apple', 'no': 1L, 'price': 10L},
4
{'city': 'Mumbai', 'fruit': 'apple', 'no': 2L, 'price': 20L},
5
{'city': 'Nagpur', 'fruit': 'orange', 'no': 3L, 'price': 5L},
6
{'city': 'Delhi', 'fruit': 'orange', 'no': 4L, 'price': 7L},
7
{'city': 'Bangalore', 'fruit': 'Mango', 'no': 5L, 'price': 20L},
8
{'city': 'Chennai', 'fruit': 'Mango', 'no': 6L, 'price': 15L}])
9
10
m1 = df['fruit'] == 'orange'
11
m2 = df['price'] == 5
12
13
df[m1&m2]['city'].values[0] # 'Nagpur'
14