用年份替换多列为一列

时间:2019-01-08 13:10:20

标签: python dataframe plot

我正在使用世界银行数据,并且试图创建一些表示时间的图表,但现在的数据如下所示:

enter image description here

因为我不认为有办法将其更改为日期时间,所以我认为唯一的方法是用我现在拥有的列名(即值和当前值)将所有这些年份列替换为“ Year”列一个单独的列。

Python中是否有任何不错的功能允许这样做,或者我必须遍历整个数据框?

编辑以包含一些代码:

df2 = pd.DataFrame({'Country Name': ['Aruba', 'Afghanistan', 'Angola'],
   'Country Code': ['ABW', 'AFG', 'AGO'],
   '1960':[65.66, 32.29, 33.25],
   '1961': [66.07, 32.74, 33.57],
   '1962': [66.44, 33.18, 33.91], 
   '1963': [66.79, 33.62, 34.27], 
   '1964': [66.11, 34.06, 34.65], 
   '1965': [67.44, 34.49, 35.03]}).set_index('Country Name')

1 个答案:

答案 0 :(得分:0)

您可以尝试对数据框进行转置,这样年份值将成为行,然后可以将其重命名为年份并在绘图中使用它。

您可以尝试这样的事情:

import pandas as pd
from matplotlib import pyplot as plt

df1 = pd.DataFrame({'Country Name' : ['Aruba', 'Afghanistan', 'Angola'],
   'Country Code' : ['ABW', 'AFG', 'AGO'],
   '1960' : [65.66, 32.29, 33.25],
   '1961' : [66.07, 32.74, 33.57],
   '1962' : [66.44, 33.18, 33.91], 
   '1963' : [66.79, 33.62, 34.27], 
   '1964' : [66.11, 34.06, 34.65], 
   '1965' : [67.44, 34.49, 35.03]})

df2 = df1.transpose()
df2.columns = df1['Country Name']
df2 = df2[2:]
df2['Year'] = df2.index.values

plt.plot(df2['Year'], df2['Aruba'])
plt.plot(df2['Year'], df2['Afghanistan'])
plt.plot(df2['Year'], df2['Angola'])
plt.legend()
plt.show()

输出:Plot Output