赞
踩
Pandas
中的索引操作非常灵活,功能非常强大。学会他的索引操作能帮助我们更好的处理数据。下面来对索引进行讲解。
不管是Series
还是DataFrame
,索引对象的类型都是Index
或者其子类。我们可以通过以下代码查看:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4))
print(type(df.index))
print(type(df.columns))
输出结果为:
RangeIndex(start=0, stop=4, step=1)
RangeIndex(start=0, stop=4, step=1)
可以看到行和列的类型,都是RangeIndex
类型。RangeIndex
属于Index
的子类。当然我们也可以直接通过显示创建Index
的方式,修改df
的index
和columns
,示例代码如下:
df.index = pd.Index(list("ABCD"))
df.columns = pd.Index(list("abcd"))
print(df)
输出结果为:
a | b | c | d | |
---|---|---|---|---|
A | 0.274963 | 0.084407 | 0.157835 | 0.797312 |
B | 0.090830 | 0.512263 | 0.419373 | 0.466661 |
C | 0.903084 | 0.367636 | 0.219719 | 0.258690 |
D | 0.009205 | 0.631668 | 0.495482 | 0.316959 |
常用的Index
类型还有以下。
区间索引,用法与Python中的range
函数类似,可以指定start
、stop
、step
参数。示例代码如下:
df.index = pd.RangeIndex(start=1, stop=9, step=2)
数值类型的索引,包括有浮点类型的Float64Index
、整形的Int64Index
、无符号整形的UInt64Index
、序列类型的RangeIndex
。他们的用法如下:
# 浮点类型
>>> pd.Float64Index([1,2,3,4])
Float64Index([1.0, 2.0, 3.0, 4.0], dtype="float64")
# 整数
>>> pd.Int64Index([1,2,3,4])
Int64Index([1, 2, 3, 4], dtype="int64")
# 无符号整数
>>> pd.UInt64Index([1,2,3,4])
UInt64Index([1, 2, 3, 4], dtype="uint64")
其中Float64Index
、Int64Index
、UInt64Index
在Pandas 2.0
版本中会被移除,统一使用NumericIndex
代替。
分类索引,索引的值只能是指定分类的。否则会用NAN来代替。示例代码如下:
>>> df.index = pd.CategoricalIndex(list("ABCD"),categories=list("ABCD"))
输出结果为:
a b c d
A 0.274963 0.084407 0.157835 0.797312
B 0.090830 0.512263 0.419373 0.466661
C 0.903084 0.367636
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。