【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)

输出:
参数keys的示例

参数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)

输出:
参数drop的示例

参数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)

输出:
参数append的示例

参数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)

输出:
参数inplace的示例

参数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)

输出:
参数verify_integrity的示例
注意:虽然输出的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)

输出:
在这里插入图片描述

  • 33
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值