jake wong
jake wong

Reputation: 5228

Reordering rows in Python Pandas Dataframe

I appended 3 rows to a dataframe with this code: z = pandas.DataFrame.append(z, [{'Items': 'Foo'}, {'Items': 'Barr'}, {'Items': 'Options'}]) and got the below result:

    Items          Last 12 Months  
0   Apple          48.674  
1   Dragon Fruit   8.786  
2   Milk           2.367  
3   Foo            3.336  
4   Barr           0.005  
5   Options        NaN  

Is it possible to move the last 3 rows "Foo, Barr, Options" to become the first 3 rows instead? Without changing the index..

Upvotes: 1

Views: 302

Answers (1)

Nehal J Wani
Nehal J Wani

Reputation: 16629

How about reindex?

In [4]: df
Out[4]: 
          Items  Last 12 Months
0         Apple          48.674
1  Dragon Fruit           8.786
2          Milk           2.367

In [5]: z = pd.DataFrame([{'Items': 'Foo', 'Last 12 Months': 3.336}, {'Items': 'Barr', 'Last12Months': 0.005}, {'Items': 'Options'}])

In [6]: z
Out[6]: 
     Items  Last 12 Months
0      Foo           3.336
1     Barr           0.005
2  Options             NaN

In [7]: df = df.append(z, ignore_index = True)

In [8]: df
Out[8]: 
          Items  Last 12 Months
0         Apple          48.674
1  Dragon Fruit           8.786
2          Milk           2.367
3           Foo           3.336
4          Barr           0.005
5       Options             NaN

In [9]: prev_len = len(df) - len(z)

In [10]: df = df.reindex(range(prev_len, len(df)) + range(prev_len))

In [11]: df
Out[11]: 
          Items  Last 12 Months
3           Foo           3.336
4          Barr           0.005
5       Options             NaN
0         Apple          48.674
1  Dragon Fruit           8.786
2          Milk           2.367

Upvotes: 1

Related Questions