如何更改 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()
。希望这对您有所帮助!
在这段代码的最后一行,我想将索引设置为 '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()
。希望这对您有所帮助!