- Index;单层索引;
- MultiIndex;多层索引;
举例:
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(4, 4))*10//1 print(df)
输出结果为:
0 1 2 3 0 7.0 9.0 6.0 1.0 1 9.0 0.0 2.0 2.0 2 3.0 7.0 8.0 4.0 3 7.0 6.0 8.0 4.0单层索引
- 创建dataframe时,如果没有指定index和columns参数,pandas将会自动生成对应的索引;
- 默认的行列标签皆为一个RangeIndex对象,属于Index中的一种形式;
- 比如:
print(df.index)
输出结果为:RangeIndex(start=0, stop=4, step=1)
- 比如:
- 默认的行列标签皆为一个RangeIndex对象,属于Index中的一种形式;
- Index是更通用的函数,通过Index函数可以创建Index对象,更改dataframe的索引;
Index_A = df.index = pd.Index(list('ABCD')) df.columns = pd.Index(list('abcd')) print(df) print(Index_A)输出结果为:a b c d A 8.0 8.0 6.0 5.0 B 1.0 4.0 4.0 4.0 C 3.0 9.0 8.0 6.0 D 3.0 1.0 0.0 0.0 Index(['A', 'B', 'C', 'D'], dtype='object')
- index对象包含以下属性:
- 值构成的数组:
Index_A.array
输出为:['A', 'B', 'C', 'D'] Length: 4, dtype: object - 数据类型:
Index_A.dtype
输出为:dtype('O') - level个数:
Index_A.nlevels
输出为:1
- 维度:
Index_A.ndim
输出为:1
- 尺寸:
Index_A.shape
输出为:(4,)
- 个数:
Index_A.size
输出为:4
- 值:
Index_A.values
输出为:array(['A', 'B', 'C', 'D'], dtype=object)
- 值构成的数组:
- index对象包含以下属性:
- 获取索引index;
df.index
- 访问当前数据的索引;
- 指定索引
df.index = ['x', 'y']
- 重新设置索引
df.reindex(list('abcde')) - 指定某一列作为索引
df.set_index('column_name', drop=False) - 返回索引的唯一值
df.set_index('column_name').index.unique()
- NumericIndex,数值索引;
- 浮点数索引:
pd.Float64Index([1, 2, 3, 4])
输出为:[1.0, 2.0, 3.0, 4.0]
- 整数;Int64Index
- 无符号整数;UInt64Index
- 等差序列;
pd.RangeIndex(start=1,stop=8,step=2)
- 浮点数索引:
- CategoricalIndex,范围索引;
- 约束可选值的范围,超过范围的值强制变为NaN;
df.index = pd.CategoricalIndex(list('ABCD'), categories=['A', 'B', 'C'])则D的位置显示NaN
- 约束可选值的范围,超过范围的值强制变为NaN;
- IntervalIndex,区间索引;
- 索引的值为一个区间,通过interval_range函数创建;
df.index = pd.interval_range(start=0, end=4)
此时索引的形式:(0, 1] (1, 2] ……
- 索引的值为一个区间,通过interval_range函数创建;
- DatetimeIndex,时间索引;
- PeriodIndex
- 和DatetimeIndex类似,值为日期和时间的格式化结果
- TimedeltaIndex;
- 将时间间隔转换为时间戳;
- 当多个单层的索引结合在一起时,就形成了多层索引;
- 适用于多种分类标准的场景,极大增强了数据处理的灵活性;
- 使用set_index()函数;
- 举例:
df_1 = pd.DataFrame({"a":range(4), "b":range(4, 0, -1), "c":['one', 'two', 'one', 'two'], "d":list("asdf")}) df_2 = df_1.set_index(["c", "d"]) print(df_2)输出结果为:a b c d one a 0 4 two s 1 3 one d 2 2 two f 3 1
- 举例:
- 可以使用数组、元组、DataFrame创建;
- 使用from_product函数创建;
- 替换索引层次;
df_1.swaplevel()
- 取值时,从外层向内层逐层取值,有时需要交换次序才能取值;
- 取出特定位置值:
df_1.loc["one"].loc["a"]
- 区别于dataframe,在series中直接在方括号中写索引即可取值;



