Python Pandas – 从范围对象创建 RangeIndex
介绍
在 Pandas 中,RangeIndex 是索引对象的一种。RangeIndex 对象主要用于行索引。Pandas 在很多情况下都会使用它。RangeIndex 对象的作用是为数据选择器提供一个数字索引。
在 Pandas 中,RangeIndex 可以从多种类型的数据对象中创建。其中包括 Python 的内置 range
类型,以及 Pandas 中的 DataFrame 和 Series 对象。本文将主要讲述如何使用范围对象创建 RangeIndex。
如何使用范围对象创建 RangeIndex
要在 Pandas 中使用范围对象创建 RangeIndex,可以利用 pd.RangeIndex()
函数。该函数的语法如下:
pd.RangeIndex(start=0, stop=None, step=1, dtype='int64')
其中,参数 start
用于指定范围对象的起始数值(默认值为 0),stop
用于指定范围对象的结束数值(不包含该值),step
用于指定范围对象的步长(默认值为 1),dtype
用于指定索引的数据类型(默认值为 ‘int64’)。
例如,要创建一个从 10 到 20,步长为 2 的 RangeIndex,可以使用以下代码:
import pandas as pd
index = pd.RangeIndex(start=10, stop=20, step=2)
print(index)
输出:
RangeIndex(start=10, stop=20, step=2)
可以看到,输出结果为一个包含起始数值、结束数值、步长的 RangeIndex 对象。
利用 RangeIndex 为 DataFrame 和 Series 赋值
在 Pandas 中,可以使用 RangeIndex 为 DataFrame 和 Series 赋值。
例如,首先创建一个空的 DataFrame,并为其指定行索引:
import pandas as pd
df = pd.DataFrame(columns=['A', 'B', 'C'], index=pd.RangeIndex(start=0, stop=5))
print(df)
输出:
A B C
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
可以看到,输出结果为一个包含 5 行、3 列,元素均为 NaN 的 DataFrame。
我们也可以使用 RangeIndex 的属性 stop
来获取索引终点的值。例如,接下来的代码创建了一个 Series,并使用 len
获取其长度,以用 pd.RangeIndex
为其创建行索引。
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50])
s.index = pd.RangeIndex(stop=len(s))
print(s)
输出:
0 10
1 20
2 30
3 40
4 50
dtype: int64
可以看到,输出结果为一个包含值为 10、20、30、40、50 的 Series。
利用 RangeIndex 对 DataFrame 和 Series 进行切片操作
RangeIndex 对象主要用于对行进行切片操作。当使用 []
运算符选择行时,Pandas 会默认使用 RangeIndex 对象作为索引。
例如,创建一个包含 5 行、3 列的 DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': ['a', 'b', 'c', 'd', 'e']},
index=pd.RangeIndex(stop=5))
print(df)
输出:
A B C
0 1 10 a
1 2 20 b
2 3 30 c
3 4 40 d
4 5 50 e
可以看到,输出结果为一个包含 5 行、3列的 DataFrame。
我们可以使用 [start:stop]
的方式来对 DataFrame 进行切片操作。例如,下面的代码从第 2 行开始,一直到第 4 行结束(不包含第 4 行),对 DataFrame 进行切片:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': ['a', 'b', 'c', 'd', 'e']},
index=pd.RangeIndex(stop=5))
subset = df[1:4]
print(subset)
输出:
A B C
1 2 20 b
2 3 30 c
3 4 40 d
可以看到,输出结果为包含 3 行、3 列的 DataFrame。
与此类似,我们也可以使用 RangeIndex 对象来对 Series 进行切片操作。例如,下面的代码从第 2 行开始,一直到第 4 行结束(不包含第 4 行),对 Series 进行切片:
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50], index=pd.RangeIndex(stop=5))
subset = s[1:4]
print(subset)
输出:
1 20
2 30
3 40
dtype: int64
可以看到,输出结果为包含 3 个元素的 Series。
总结
本文主要讲解了如何利用范围对象创建 RangeIndex,并将其用于为 DataFrame 和 Series 赋值、进行切片操作等。使用 RangeIndex 可以为数据选择器提供一个数字索引,使得数据的处理更加高效有效。同时本文也介绍了 pd.RangeIndex()
函数的常用参数,帮助读者更好地理解和掌握该函数的用法。