Pandas set_index doesn't drop the column

11,454

Change column of DataFrame to column name, also drop = True is default, so is possible remove it:

dfname.set_index(dfname["date"], drop = True, inplace = True)

to:

dfname.set_index("date", inplace = True)

Sample:

rng = pd.date_range('2017-04-03', periods=10)
dfname = pd.DataFrame({'date': rng, 'a': range(10)})  

dfname.set_index("date", inplace = True)
print (dfname)
            a
date         
2017-04-03  0
2017-04-04  1
2017-04-05  2
2017-04-06  3
2017-04-07  4
2017-04-08  5
2017-04-09  6
2017-04-10  7
2017-04-11  8
2017-04-12  9

EDIT:

If input is file, use read_csv with parameters index_col and parse_dates for DatetimeIndex:

df = pd.read_csv(file, index_col=['date'], parse_dates=['date'])
Share:
11,454

Related videos on Youtube

Michael
Author by

Michael

Updated on June 15, 2022

Comments

  • Michael
    Michael almost 2 years

    I run the following code function on my dataframe:

    del dfname["Unnamed: 0"]
    dfname["date"] = pd.to_datetime(dfname["date"])
    dfname.set_index(dfname["date"], drop=True, inplace=True)
    

    But the column does not drop (I know that the default is drop=True)

    The output dataframe looks like this. I'm using Python 3.6

    • smci
      smci almost 4 years
      .set_index() wants the actual column name, so 'date', not dfname["date"]
  • Michael
    Michael about 6 years
    awesome! just the column name did it! THANKS!
  • Okroshiashvili
    Okroshiashvili over 3 years
    @jezrael, I encountered this today. Never noticed yet. If I use df.set_index(df["col_1"]) this does not drop the column given that drop parameter is set to True by default. If I did the following df.set_index("col_1") then it drops the columns "col_1". What's that behavior?