1

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!

saibot_90
  • 39
  • 6

2 Answers2

3

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)])
SR3142
  • 550
  • 3
  • 9
1

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
Aidis
  • 1,272
  • 4
  • 14
  • 31