Reputation: 41
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
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
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