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 index 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.
-
You can use the assign() function to add a new column to the end of a pandas DataFrame: df = df. assign(col_name=[value1, value2, value3, ...])
You can use concat . Give it a dictionary of dataframes where the key is the new column level you want to add. You can use the same technique to create multiple levels. simple and elegant!
In pandas you can add/append a new column to the existing DataFrame using DataFrame. insert() method, this method updates the existing DataFrame with a new column. DataFrame. assign() is also used to insert a new column however, this method returns a new Dataframe after adding a new column.
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
option 1set_index
and T
df.T.set_index(np.repeat('C', df.shape[1]), append=True).T
option 2pd.concat
, keys
, and swaplevel
pd.concat([df], axis=1, keys=['C']).swaplevel(0, 1, 1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With