31

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
smci
  • 29,564
  • 18
  • 109
  • 144
MrClean
  • 982
  • 2
  • 10
  • 17

6 Answers6

44

Try the following:

df = df.T.reset_index(drop=True).T
Martin Evans
  • 43,220
  • 16
  • 78
  • 90
Pablo Fonseca
  • 667
  • 6
  • 6
35

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.shape[1])
>>> 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
Community
  • 1
  • 1
Patrick Nieto
  • 512
  • 3
  • 4
4

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]
Vaishali
  • 35,413
  • 4
  • 48
  • 78
1

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])]

1

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)
wisbucky
  • 27,562
  • 9
  • 122
  • 88
0

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
Jeff Hernandez
  • 1,945
  • 15
  • 18