Pandas (python): How to add column to dataframe for index?

PythonIndexingDataframePandas

Python Problem Overview


The index that I have in the dataframe (with 30 rows) is of the form:

Int64Index([171, 174,173, 172, 199..............
        ....175, 200])

The index is not strictly increasing because the data frame is the output of a sort(). I want to have add a column which is the series:

[1, 2, 3, 4, 5......................., 30]

How should I go about doing that?

Python Solutions


Solution 1 - Python

How about:

df['new_col'] = range(1, len(df) + 1)

Alternatively if you want the index to be the ranks and store the original index as a column:

df = df.reset_index()

Solution 2 - Python

I stumbled on this question while trying to do the same thing (I think). Here is how I did it:

df['index_col'] = df.index

You can then sort on the new index column, if you like.

Solution 3 - Python

How about this:

from pandas import *

idx = Int64Index([171, 174, 173])
df = DataFrame(index = idx, data =([1,2,3]))
print df

It gives me:

     0
171  1
174  2
173  3

Is this what you are looking for?

Solution 4 - Python

The way to do that would be this:

Resetting the index:

df.reset_index(drop=True, inplace=True)

Sorting an index:

df.sort_index(inplace=True)

Setting a new index from a column:

df.set_index('column_name', inplace=True)

Setting a new index from a range:

df.index = range(1, 31, 1) #a range starting at one ending at 30 with a stepsize of 1.

Sorting a dataframe based on column value:

df.sort_values(by='column_name', inplace=True)

Reassigning variables works as-well:

df=df.reset_index(drop=True)
df=df.sort_index()
df=df.set_index('column_name')
df.index = range(1, 31, 1) #a range starting at one ending at 30 with a stepsize of 1.
df=df.sort_values(by='column_name')

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNavneetView Question on Stackoverflow
Solution 1 - PythonChang SheView Answer on Stackoverflow
Solution 2 - Pythonuser1225054View Answer on Stackoverflow
Solution 3 - PythonnitinView Answer on Stackoverflow
Solution 4 - PythonXiBView Answer on Stackoverflow