1

I have a dataframe tha tI have grouped by month and day and looks like this

     Value
1  2 22
  10 30
  15 5
2  8 12
  20 15
3  5 20

The ifrst index indicates the month and the second index refers the day.

I would like to plot the column "Value" on a plot where the need to be day-month in this format, e.g 2-Jan

When I cam calling df.index.tolist() I am getting a tuple of the indexes (1,2),(1,10) etc but I do not know how can I convert these to a daytime object.Thanks

1 Answer 1

2

You can use rename_axis with reset_index and assign for create df1.

Then to_datetime and format by strftime, output is assigned back to index:

df1 = df.rename_axis(['month','day']).reset_index().assign(year=2000)
print (df1)
   month  day  Value  year
0      1    2     22  2000
1      1   10     30  2000
2      1   15      5  2000
3      2    8     12  2000
4      2   20     15  2000
5      3    5     20  2000

df.index = pd.to_datetime(df1[['day','month','year']]).dt.strftime('%d-%b')
print (df)
        Value
02-Jan     22
10-Jan     30
15-Jan      5
08-Feb     12
20-Feb     15
05-Mar     20

Another solution:

idx = df.index.map(lambda x: '-'.join((str(x[0]), str(x[1]), '2000')))
print (idx)
['1-2-2000' '1-10-2000' '1-15-2000' '2-8-2000' '2-20-2000' '3-5-2000']

df.index = pd.to_datetime(idx).strftime('%d-%b')
print (df)
        Value
02-Jan     22
10-Jan     30
15-Jan      5
08-Feb     12
20-Feb     15
05-Mar     20
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.