-1
df= df[df.a< 7.8]
df= df[df.a> 7.50]
df= df[df.b> 44.85]

Can this code be written in one line? Or shorter than 3 lines?

Mamed
  • 1,102
  • 8
  • 23
  • 1
    It [has already been answered](https://stackoverflow.com/questions/22591174/pandas-multiple-conditions-while-indexing-data-frame-unexpected-behavior) in StackOverflow. – Eduardo Sousa Sep 04 '19 at 14:07

2 Answers2

3

I will using query

df.query('a > 7.5 and a < 7.8 and b > 44.85')
BENY
  • 317,841
  • 20
  • 164
  • 234
1

I believe you need Series.between with chain & for bitwise AND or | for bitwise OR with another condition:

df1 = df[df.a.between(7.5, 7.8, inclusive=False) & (df.b> 44.85)]

Or:

df1 = df[(df.a > 7.5) & (df.a < 7.8) & (df.b> 44.85)]

Sample:

df = pd.DataFrame({
         'a':[7.6,7.5,7.4,7.56,5,7.7],
         'b':[57,48,59,44,42,53],

})

df1 = df[df.a.between(7.5, 7.8, inclusive=False) & (df.b> 44.85)]
print (df1)
     a   b
0  7.6  57
5  7.7  53
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252