adroot
adroot

Reputation: 41

Does condition selection preserve order in Pandas DataFrame?

For example,

df = pandas.DataFrame({'name':['a','b','c'], 'age':[10,20,30]})

  name  age
0    a   10
1    b   20
2    c   30

df[df['age'] > 10]

  name  age
1    b   20
2    c   30

My question is: Does Pandas make sure the index order is preserved? Is any possible the result like:

  name  age
2    c   30
1    b   20

Thanks

Upvotes: 4

Views: 3326

Answers (2)

jezrael
jezrael

Reputation: 863166

Yes, filtering preserve order of rows (also index values).

Need to sort by column age if need change ordering:

df1 = df[df['age'] > 10].sort_values('age', ascending=False)
print (df1)
  name  age
2    c   30
1    b   20

Upvotes: 6

zipa
zipa

Reputation: 27879

It preserves the data order, doesn't sort the data by any attribute automatically.

Here you can see that:

df = pd.DataFrame({'name':['a','b','c'], 'age':[30,20,10]}, index=[1,0,2])

df[df['age']>10]
#   age name
#1   30    a
#0   20    b

Upvotes: 2

Related Questions