Pandas对索引问题的处理


前言

本文将介绍Pandas对索引的基本操作,操作的对象包括Series对象和Dataframe对象。


一、索引的基础知识

使用索引的好处在于:

	1、为用户实现更加方便的查询数据
	2、提高数据查询的性能
  • 如果索引是唯一的,Pandas将使用hash进行优化
  • 如果索引是不唯一且有序的,Pandas将使用二分查找算法
  • 如果索引是不唯一且无序的,Pandas每次查询时将扫描数据表

二、Series对象的操作

代码如下(示例):

# Series对象重建索引
import pandas as pd
ss = pd.Series([11, 22, 33,  44], index = [1, 2, 3, 4])
print(ss)

# print(ss.reindex(range(1, 6)))
# 使用特定值来填充索引
# print(ss.reindex(range(1, 6), fill_value = 0))
# 向前填充
# print(ss.reindex(range(1, 6), method = 'ffill'))
# 向后填充
print(ss.reindex(range(1, 6), method = 'bfill'))

在填充的过程中,可以通过设定fill_value来指定填充值
向前填充,即空白处会根据该列上一行的值来进行填充
向后填充,即空白处会根据该列下一行的值来进行填充,若没有下一行,则填充nan


三、Dataframe对象的操作

# Dataframe对象重建索引
import pandas as pd
pd.set_option('display.unicode.east_asian.width', True)
data = [[78, 89, 99], [67, 89, 90]]
index = ['msd1001', 'msd1002']
columns = ['语文', '英语', '数学']
df = pd.DataFrame(data = data, index = index, columns = columns)
print(df)

# 重建行索引
# print(df.reindex(['msd1001', 'msd1002', 'msd1003']))
# 重建列索引
# print(df.reindex(columns = ['语文', '数学', '英语', '体育']))
# 同时重建行索引和列索引(并使用指定值来填充空白值)
print(df.reindex(index = ['msd1001', 'msd1002', 'msd1003'], columns = ['语文', '数学', '英语', '体育'], fill_value = 0))

可以分别对行索引或者列索引进行重建,也可以同时进行重建


四、设置某列为索引

# 设定某一列为索引
import pandas as pd
df = pd.read_csv('ds_salaries.csv')
# print(df)
df = df.set_index(['job_title'])
print(df)

设置Dataframe中的某一列作为索引


五、重设连续索引

# 重新设置连续的索引
import pandas as pd
pd.set_option('display.unicode.east_asian.width', True)
data = [[78, 89, 99], [67, 89, 90], [78, 90, 100]]
index = range(3)
columns = ['语文', '英语', '数学']
df = pd.DataFrame(data = data, index = index, columns = columns)
print(df)
print('-------------------------')
# 删除某一列数据之后重新建立索引
df = df.drop(0).reset_index(drop = True)
print(df)

在删除行数据之后,原有的连续索引会被打乱,通过reset_index重新设置连续索引


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas中对索引问题的一些处理方法,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值