Set MultiIndex of an existing DataFrame in pandas

dataframe, indexing, multi-index, pandas, python

Solution

When you pass inplace in makes the changes on the original variable and returns None, and the function does not return the modified dataframe, it returns None.

is_none = df.set_index(['Company', 'date'], inplace=True)
df  # the dataframe you want
is_none # has the value None

so when you have a line like:

df = df.set_index(['Company', 'date'], inplace=True)

it first modifies `df`... but then it sets `df` to None!

That is, you should just use the line:

df.set_index(['Company', 'date'], inplace=True)

Problem

I have a DataFrame that looks like ``` Emp1 Empl2 date Company 0 0 0 2012-05-01 apple 1 0 1 2012-05-29 apple 2 0 1 2013-05-02 apple 3 0 1 2013-11-22 apple 18 1 0 2011-09-09 google 19 1 0 2012-02-02 google 20 1 0 2012-11-26 google 21 1 0 2013-05-11 google ``` I want to pass the company and date for setting a `MultiIndex` for this DataFrame. Currently it has a default index. I am using ``` df.set_index(['Company', 'date'], inplace=True) ``` But when I print, it prints `None`. Is this not the correct way of doing it? Also I want to shuffle the positions of the columns company and date so that company becomes the first index, and date becomes the second in Hierarchy. Any ideas on this?

Original source