如何在Pandas中改变索引值
索引是用来唯一地识别Pandas DataFrame中的一行。它只不过是一个行的标签。如果我们在创建DataFrame时没有指定索引值,那么它将采用默认值,即从0到n-1的数字,n表示行数。
让我们创建一个数据框架
示例 :
# import necessary packages
import pandas as pd
# create a dataframe
Students = pd.DataFrame({'Admission_id': ['AB101', 'AB102', 'AB103',
'AB104', 'AB105'],
'Student_id': ['21GFG1', '21GFG2', '21GFG3',
'21GFG4', '21GFG5'],
'Student_Name': ['Akhil', 'Mahesh Babu', 'Warner',
'Virat', 'ABD'],
'Height': [5.9, 6.2, 5.6, 5.8, 5.10]})
# display dataframe
Students
输出:
方法1:使用set_index()
要改变索引值,我们需要使用pandas中的set_index方法,该方法可以指定索引。
语法
DataFrameName.set_index(“column_name_to_setas_Index”,inplace=True/False)
其中,
- inplace参数接受True或False,指定索引的改变是永久的或临时的。
- True表示变化是永久性的。
- False表示该变化是暂时的。
示例 1:
通过指定inplace=False来临时改变索引(或者)我们可以不指定inplace参数,因为_默认的inplace值是false。
# import necessary packages
import pandas as pd
# create a dataframe
Students = pd.DataFrame({'Admission_id': ['AB101', 'AB102', 'AB103',
'AB104', 'AB105'],
'Student_id': ['21GFG1', '21GFG2', '21GFG3',
'21GFG4', '21GFG5'],
'Student_Name': ['Akhil', 'Mahesh Babu', 'Warner',
'Virat', 'ABD'],
'Height': [5.9, 6.2, 5.6, 5.8, 5.10]})
# setting admission id as index but temporarily
Students.set_index("Admission_id")
输出:
但当我们在DataFrame中显示数据时,它仍然是以前的数据,因为执行的操作没有被保存,因为它是一个临时操作。
解释 – 由于我们没有指定 inplace 参数在 set_index method中,默认它被视为false,并被视为一个临时操作。
例子2 :
通过在set_index方法中指定inplace=True,永久地改变索引。
示例 :
# import necessary packages
import pandas as pd
# create a dataframe
Students = pd.DataFrame({'Admission_id': ['AB101', 'AB102', 'AB103',
'AB104', 'AB105'],
'Student_id': ['21GFG1', '21GFG2', '21GFG3',
'21GFG4', '21GFG5'],
'Student_Name': ['Akhil', 'Mahesh Babu', 'Warner',
'Virat', 'ABD'],
'Height': [5.9, 6.2, 5.6, 5.8, 5.10]})
# setting student id as index but permanently
Students.set_index("Student_id", inplace=True)
# display dataframe
Students
输出:
例子3 :
当我们想只检索特定的列而不是所有的列时,请遵循以下代码
# import necessary packages
import pandas as pd
# create a dataframe
Students = pd.DataFrame({'Admission_id': ['AB101', 'AB102', 'AB103',
'AB104', 'AB105'],
'Student_id': ['21GFG1', '21GFG2', '21GFG3',
'21GFG4', '21GFG5'],
'Student_Name': ['Akhil', 'Mahesh Babu', 'Warner',
'Virat', 'ABD'],
'Height': [5.9, 6.2, 5.6, 5.8, 5.10]})
# setting student id as index but permanently
Students.set_index("Student_id", inplace=True)
# display dataframe with required columns
Students[["Student_Name", "Height"]]
输出