Reset column index in Pandas to 0,1,2,3…?

Question:

How do I go about resetting the index of my dataframe columns to 0,1,2,3,4?

(How come doing df.reset_index() doesn’t reset the column index?)

>>> data = data.drop(data.columns[[1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]], axis=1)
>>> data = data.drop(data.index[[0,1]],axis = 0)
>>> print(data.head())
             0         2    3    4    20
2  500292014600       .00  .00  .00  NaN
3  500292014600    100.00  .00  .00  NaN
4  500292014600  11202.00  .00  .00  NaN
>>> data = data.reset_index(drop = True)
>>> print(data.head())
              0         2    3    4    20
 0  500292014600       .00  .00  .00  NaN
 1  500292014600    100.00  .00  .00  NaN
 2  500292014600  11202.00  .00  .00  NaN
Asked By: MrClean

||

Answers:

In pandas, by index you essentially mean row index. As you can see in your data, the row index is reset after drop and reset_index().

For columns, you need to rename them, you can do something like

data.columns = [ 0,1,2,3,4]
Answered By: Vaishali

Try replacing the column names:

>>> import numpy as np
>>> import pandas as pd

>>> my_data = [[500292014600, .00, .00, .00, np.nan],
              [500292014600, 100.00, .00, .00, np.nan], 
              [500292014600, 11202.00, .00, .00, np.nan]]
>>> df = pd.DataFrame(my_data, columns=[0,2,3,4,20])
>>> df
              0        2    3    4  20
0  500292014600      0.0  0.0  0.0 NaN
1  500292014600    100.0  0.0  0.0 NaN
2  500292014600  11202.0  0.0  0.0 NaN

>>> df.columns = range(df.columns.size)
>>> df
              0        1    2    3   4
0  500292014600      0.0  0.0  0.0 NaN
1  500292014600    100.0  0.0  0.0 NaN
2  500292014600  11202.0  0.0  0.0 NaN
Answered By: Patrick Nieto

Warning: This method has serious potential side effects and should probably not be used – see comments!

Try the following:

df = df.T.reset_index(drop=True).T
Answered By: Pablo Fonseca

If you have numpy imported with import numpy as np

simply set the columns to zero based indexes with data.columns = [np.arange(0,data.shape[1])]

Answered By: ashish patel

Pure Python Implementation

We enumerate the columns of the dataframe to create an array of items. Then we map the function reversed to each item in the array. Lastly, we create and input the dictionary as the parameter columns in the data frame object method rename.

columns = dict(map(reversed, enumerate(df.columns)))
df = df.rename(columns=columns)
df.head()

Results:

              0        1    2    3   4
0  500292014600      0.0  0.0  0.0 NaN
1  500292014600    100.0  0.0  0.0 NaN
2  500292014600  11202.0  0.0  0.0 NaN
Answered By: Jeff Hernandez

How come when i use df.reset_index the index of my columns is not reset?

The column "index" is really more of a column title. It’s possible that someone may using the "index" as a meaningful title. For example, perhaps they represent "Trial 1", "Trial 2", etc., so you wouldn’t want to re-index it automatically and lose the significance.

How do I go about resetting this index to 0,1,2,3,4?

To reset the column indexes:

df.columns = range(df.columns.size)
Answered By: wisbucky

I realize there is no answer that can easily be used in a pipeline/method chaining (except the double transpose, but this is a waste of computing in my opinion and has the downside of messing up the dtypes).

One can use set_axis:

df.set_axis(range(df.shape[1]), axis=1)

Used with pipe for method chaining:

df = (pd.DataFrame('x', columns=list('ABCD'), index=range(2))
        .pipe(lambda d: d.set_axis(range(d.shape[1]), axis=1))
     )

output:

   0  1  2  3
0  x  x  x  x
1  x  x  x  x
Answered By: mozway
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.