Pandas:在具有lambda函数的列中更改名称/ Feedback

时间:2017-10-30 18:21:47

标签: python excel pandas lambda

在这里获得大量帮助并进行大量网络搜索之后,我即将完成我的Cousera Datascience任务的一部分(10个)。但由于我对Python和Pandas相对缺乏经验,我有一种唠叨的感觉,即问题可以更好地解决。

任务:从此处导入Excel列表:http://unstats.un.org/unsd/environment/excel_file_tables/2013/Energy%20Indicators.xls 用国家名称中的“(”)删除数字和所有内容。 重命名某些国家/地区名称(以字母为单位)

这是有效的代码。我能做得更好/更有效率?

energy=pd.read_excel('Energy Indicators.xls',
                 sheetname='Energy',
                 skiprows=[17],
                 skipfooter=38,
                 header=15,
                 index_col=[0],
                 usecols=[2,3,4,5]
                )

energy.index.names=['Country']
energy.rename(columns={'Renewable Electricity Production': '% Renewable'}, inplace=True)
energy=energy.reset_index()
energy.Country=energy.Country.replace(to_replace='\d',value='', regex=True)
energy.Country=energy.Country.replace(to_replace='( \()(.*)(\))',value='', regex=True)
#energy.Country=energy.Country.replace(to_replace='(\.){3}',value='None', regex=True)

dicts = {"Republic of Korea": "South Korea",
           "United States of America": "United States",
           "United Kingdom of Great Britain and Northern Ireland": "United Kingdom",
           "China, Hong Kong Special Administrative Region": "Hong Kong"}

for x in dicts.keys():
    energy.Country.loc[lambda s: s==x]=dicts[x]

1 个答案:

答案 0 :(得分:0)

嗯,大熊猫已经有了内置功能:

energy.Country.replace(dicts, inplace=True)