0

How can I add a level in a data frame? from:

x  2002  2003 2004
a   1      2    3  
b   1      2    3
c   1      2    3 

To:

       year
x  2002  2003 2004
a   1      2    3  
b   1      2    3
c   1      2    3 
AKX
  • 152,115
  • 15
  • 115
  • 172
  • can this be useful? https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html – domiziano Mar 21 '22 at 10:38
  • You may do this: # Create dataframe df = pd.DataFrame({'x':['a','b','c'], '2002':[1,1,1], '2003':[2,2,2], '2004':[3,3,3]}) # Set column x to index df = df.set_index('x') # create new column object with 2 dimenisons (multi column index) cols = pd.MultiIndex.from_arrays([['year'] * 3, df.columns]) # assign new column object as columns df.columns= cols # reset index so that 'x' becomes level 1 column name df=df.reset_index() print(df) – Srinivas Apr 19 '22 at 09:14

1 Answers1

0

Seems like a duplicate of How to simply add a column level to a pandas dataframe

First create the data frame:

import pandas as pd

idx = ["a", "b", "c"]
cols = [2002, 2003, 2004]
val1 = [1, 1, 1]
val2 = [2, 2, 2]
val3 = [3, 3, 3]

df = pd.DataFrame([val1, val2, val3], columns=cols, index=idx)

Then you can do:

df.columns = pd.MultiIndex.from_product([['years'], df.columns])
Kjetil Haukås
  • 374
  • 1
  • 11