我有一个包含GDP数据的数据框。前几列包含有关国家/地区的重要数据(我已将其重命名为我想要的方式),但随后进入一长列,显示从1960年到2015年每年的列以及每年的GDP。此外,这些列的名称已被弄乱,它们以单词“未命名”顺序命名,即“未命名:4”,“未命名:5”等。
我的想法是将所有“未命名”列重命名为年份(从1960年到2015年)。例如 {'Unnamed 4':1960,'Unnamed 5':1961,等等} 。因此,我尝试编写以下代码:
GDP = pd.read_csv('world_bank.csv')
GDP = GDP.rename(columns={"Data Source": "Country", "World Development Indicators": "Country Code", "Unnamed: 2": "Indicator name", "Unnamed: 3": "Indicator Code"})
GDP = GDP.replace({'Data Source': {'Korea, Rep.': 'South Korea', 'Iran, Islamic Rep.': 'Iran', 'Hong Kong SAR, China': 'Hong Kong'}})
#Below is what I wrote to try to iterate through
GDP = GDP.rename(columns={["Unnamed: "+str(i)+": "+str(j) for i in range(4, 60) for j in range(1960, 2016)]})
但是当我使用该代码时,会出现以下错误:
TypeError:不可散列的类型:“列表”
有什么想法吗?
答案 0 :(得分:1)
您可以像这样直接在python中使用dict comprehension
GDP.rename(columns = {"Unnamed: "+str(i): str(1956+i) for i in range(4, 60)})
答案 1 :(得分:0)
您应该将字典传递给rename
函数,该字典应包含现有的列名作为键,替换的列名作为值。您可以在documentation中看到一个示例。