【pandas】set_index函数详解

参数

  1. keys : 要设置为索引的列名(如有多个应放在一个列表里)
  2. drop : 将设置为索引的列删除,默认为True
  3. append : 是否将新的索引追加到原索引后(即是否保留原索引),默认为False
  4. inplace : 是否在原DataFrame上修改,默认为False
  5. verify_integrity : 是否检查索引有无重复,默认为False

示例

参数keys

keys指定的列将被设置为索引

import pandas as pd

data = pd.DataFrame([['Alice', 'Math', 93], ['Bob', 'Physics', 98], ['Chris', 'Chemistry', 96], ['David', 'Biology', 90]],
                    columns=['Name', 'Subject', 'Score'])
print(data)
print('\n')

data1 = data.set_index(keys='Name')
print(data1)

输出:
【pandas】set_index函数详解_第1张图片

参数drop

将设置为索引的列删除,默认为True

import pandas as pd

data = pd.DataFrame([['Alice', 'Math', 93], ['Bob', 'Physics', 98], ['Chris', 'Chemistry', 96], ['David', 'Biology', 90]],
                    columns=['Name', 'Subject', 'Score'])
print(data)
print('\n')

data1 = data.set_index(keys='Name')
print(data1)
print('\n')

data2 = data.set_index(keys='Name', drop=False)
print(data2)

输出:
【pandas】set_index函数详解_第2张图片

参数append

原索引是否保留。True为保留,默认为False

import pandas as pd

data = pd.DataFrame([['Alice', 'Math', 93], ['Bob', 'Physics', 98], ['Chris', 'Chemistry', 96], ['David', 'Biology', 90]],
                    columns=['Name', 'Subject', 'Score'])
print(data)
print('\n')

data1 = data.set_index(keys='Name')
print(data1)
print('\n')

data2 = data.set_index(keys='Name', append=True)
print(data2)

输出:
【pandas】set_index函数详解_第3张图片

参数inplace

是否在原DataFrame上修改,默认为False

import pandas as pd

data = pd.DataFrame([['Alice', 'Math', 93], ['Bob', 'Physics', 98], ['Chris', 'Chemistry', 96], ['David', 'Biology', 90]],
                    columns=['Name', 'Subject', 'Score'])
print(data)
print('\n')

data1 = data.set_index(keys='Name')
print(data1)
print('\n')

data2 = data.set_index(keys='Name', inplace=True)
print(data2)
print(data)

输出:
【pandas】set_index函数详解_第4张图片

参数verify_integrity

是否检查索引有无重复,默认为False,若设置为True会影响程序性能,慎用

import pandas as pd

data = pd.DataFrame([['Alice', 'Math', 93], ['Bob', 'Physics', 98], ['Chris', 'Chemistry', 96], ['Chris', 'Biology', 90]],
                    columns=['Name', 'Subject', 'Score'])
print(data)
print('\n')

data1 = data.set_index(keys='Name')
print(data1)
print('\n')

data2 = data.set_index(keys='Name', verify_integrity=True)
print(data2)

输出:
【pandas】set_index函数详解_第5张图片
注意:虽然输出的DataFrame中Name与其他列的列名不在同一行,好像属于两个不同的level,其实并不是,如果我们再用reset_index将Name取消索引,并尝试将它插入第二级(level=1),我们会发现Name最后和其他列名同属第一级(关于参数的含义请参考reset_index函数详解):

import pandas as pd

data = pd.DataFrame([['Alice', 'Math', 93], ['Bob', 'Physics', 98], ['Chris', 'Chemistry', 96], ['Chris', 'Biology', 90]],
                    columns=['Name', 'Subject', 'Score'])
print(data)
print('\n')

data1 = data.set_index(keys='Name')
print(data1)
print('\n')

data2 = data1.reset_index(col_level=2)
print(data2)

输出:
【pandas】set_index函数详解_第6张图片

你可能感兴趣的:(Python编程,python)