Steven G Steven G - 1 month ago 32
Python Question

How to simply add a column level to a pandas dataframe

let say I have a dataframe that looks like this:

df = pd.DataFrame(index=list('abcde'), data={'A': range(5), 'B': range(5)})
df
Out[92]:
A B
a 0 0
b 1 1
c 2 2
d 3 3
e 4 4


Asumming that this dataframe already exist, how can I simply add a level 'C' to the column so I get this:

df
Out[92]:
A B
C C
a 0 0
b 1 1
c 2 2
d 3 3
e 4 4


I saw SO anwser like this python/pandas: how to combine two dataframes into one with hierarchical column index? but this concat different dataframe instead of adding a column level to an already existing dataframe.

-

Answer

As suggested by @StevenG himself, a better answer:

df.columns = pd.MultiIndex.from_product([df.columns, ['C']])

print(df)
#    A  B
#    C  C
# a  0  0
# b  1  1
# c  2  2
# d  3  3
# e  4  4