Joydeep
Joydeep

Reputation: 147

Dataframe Transpose and Index

I have a Pandas dataframe (df) like this.

Color  20-05-2020  21-05-2020  22-05-2020  23-05-2020
Yellow   10           20          30          40
Red      15           25          35          45
Blue     23           34          45          56

When I transposed using df.T, I got like this.

Color        Yellow  Red  Blue
20-05-2020     10    15    23
21-05-2020     20    25    34
22-05-2020     30    35    45
23-05-2020     40    45    56

When I checked df.index, I found,

Index(['Color', '20-05-2020', '21-05-2020', '22-05-2020', '23-05-2020'], dtype='object', length=...)

How do I remove "Color" from index? Also I want to name the index as "Date". How do I do that?

Thanks.

Upvotes: 0

Views: 101

Answers (1)

Sayandip Dutta
Sayandip Dutta

Reputation: 15872

Use df.index.name:

>>> df
        20-05-2020  21-05-2020  22-05-2020  23-05-2020
Color                                                 
Yellow          10          20          30          40
Red             15          25          35          45
Blue            23          34          45          56

>>> df = df.T
>>> df.columns.name = ''
>>> df.index.name = 'Date'
>>> df
             Yellow  Red  Blue
Date         
20-05-2020     10    15    23
21-05-2020     20    25    34
22-05-2020     30    35    45
23-05-2020     40    45    56

Or,

>>> df = pd.DataFrame(df.values.T, 
                      index=df.columns.rename('Date'),
                      columns=df.index.rename(''))
>>> df
             Yellow  Red  Blue
Date         
20-05-2020     10    15    23
21-05-2020     20    25    34
22-05-2020     30    35    45
23-05-2020     40    45    56

Or you can use df.reindex:

>>> df.reindex(df.index.rename('')).T.reindex(df.columns.rename('Date'))
            Yellow  Red  Blue
Date                         
20-05-2020      10   15    23
21-05-2020      20   25    34
22-05-2020      30   35    45
23-05-2020      40   45    56

Depending on your preference, you can either set df.columns.name='Date' or df.index.name='Date'.

Upvotes: 3

Related Questions