如何更改 Pandas DataFrame 的索引

How to change the index of a Pandas DataFrame

在这段代码的最后一行,我想将索引设置为 'Country',但是当我查看数据框的列时,它仍然被称为 'index'。我尝试过不使用 inplace 并创建一个新的 df 并使用选项 drop=True。但这行不通。

import pandas as pd
import numpy as np
Energy = pd.read_excel('./assets/Energy Indicators.xls', header=None, footer=None, usecols=range(2,6))
Energy = Energy[18:245].reset_index()
Energy.rename(columns={2 : 'Country', 3 :'Energy Supply', 4 : 'Energy Supply per Capita', 5 :  '% Renewable'}, inplace=True)
Energy.replace('...', np.nan, inplace=True)
Energy.replace(["Republic of Korea", "United States of America", "United Kingdom of Great Britain and Northern Ireland", "China, Hong Kong Special Administrative Region"],["South Korea", "United States", "United Kingdom", "Hong Kong"], inplace = True)
Energy['Country'] = Energy['Country'].str.replace(r"\(.*\)","")
Energy['Country'] = Energy['Country'].str.replace('\d+', '',)
Energy['Energy Supply'] = Energy['Energy Supply'].apply(lambda x : x * 1000000)
Energy.set_index('Country', inplace=True)

print(Energy.index)
print(Energy.columns.values)

输出为:

Index(['Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra',
       'Angola', 'Anguilla', 'Antigua and Barbuda', 'Argentina', 'Armenia',
       ...
       'United States Virgin Islands', 'Uruguay', 'Uzbekistan', 'Vanuatu',
       'Venezuela ', 'Viet Nam', 'Wallis and Futuna Islands', 'Yemen',
       'Zambia', 'Zimbabwe'],
      dtype='object', name='Country', length=227)
['index' 'Energy Supply' 'Energy Supply per Capita' '% Renewable']

如何设置索引?

您在列中看到的 'index' 不是您的索引,它是您在 Energy = Energy[18:245].reset_index()

时留下的列

你做对了!

当您 Energy.set_index('Country', inplace=True) 时,它确实奏效了! 这就是为什么当您打印索引 Energy.index 时,它会为您提供国家/地区作为结果。 Index 是 Pandas 中的 class。阅读更多 here

print(Energy.index)的输出也表示要设置为国家的索引。

下一个输出,print(Energy.columns) 显示一个 index 列,因为你之前做了一个 reset_index()。希望这对您有所帮助!