Pandas make columns to rows

Question:

I got a pandas dataframe which looks like the following picture:

enter image description here

Every year is a new column, but i want them in one column called year.

It should look similar like this dataframe:

enter image description here

Anybody got an idea, how i can achieve this?
Thanks!

Asked By: saibot_90

||

Answers:

you need to use the melt method, something like this

df2 = df.melt(id_vars=['country','continent'], var_name="year", value_vars=[str(x) for x in range(1850,2011)])
Answered By: SR3142

A different approach.
For this to work you need to have all "name" columns as index.

Here is a sample if you only have Country and values.

df = pd.DataFrame({
    "Country": ["China", "Lithuania"],
    "2000": [2,10],
    "2022": [10,44],
})

df.set_index("Country").stack()

Results in

Country
China      2000     2
           2022    10
Lithuania  2000    10
           2022    44
dtype: int64
Answered By: Aidis
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.