Pandas DataFrame的索引方式主要有以下几种:
-
位置索引(Position-based indexing)
- 使用行和列的整数位置进行索引。例如,
df.iloc[0, 1]
会选择第一行第二列的值(注意Python是0索引的)。
- 使用行和列的整数位置进行索引。例如,
-
标签索引(Label-based indexing)
- 使用行和列的标签(通常是字符串或日期)进行索引。例如,如果有一列名为"A",可以使用
df['A']
来选择这一列。对于行,如果设置了行索引(例如,使用set_index()
方法),也可以使用标签来选择行,如df.loc['index_label']
。
- 使用行和列的标签(通常是字符串或日期)进行索引。例如,如果有一列名为"A",可以使用
-
布尔索引(Boolean indexing)
- 使用布尔值(True/False)数组来选择DataFrame中的行。这通常与条件语句结合使用,例如
df[df['A'] > 10]
会选择列"A"中值大于10的所有行。
- 使用布尔值(True/False)数组来选择DataFrame中的行。这通常与条件语句结合使用,例如
-
切片(Slicing)
- 对于标签索引,可以使用切片来选择一系列的行或列。例如,
df['A':'C']
会选择从"A"到"C"的列(包括"A"和"C")。对于位置索引,切片可能不太直观,因为通常使用整数位置进行精确选择。
- 对于标签索引,可以使用切片来选择一系列的行或列。例如,
-
条件表达式和查询(Conditional expressions and querying)
- 使用复杂的条件表达式来选择数据。Pandas提供了
query()
方法,允许使用类似SQL的语法来查询数据。
- 使用复杂的条件表达式来选择数据。Pandas提供了
-
多级索引(Multi-level indexing)
- 在DataFrame中设置多个级别的索引(也称为层次化索引)。这允许在多个维度上对数据进行索引和切片。
-
整数位置与标签的混合索引
- 在某些情况下,DataFrame的行和列可能同时包含整数位置和标签索引。例如,列可能使用标签,而行可能使用整数位置。
-
使用
.at[]
和.iat[]
进行快速标量访问.at[]
和.iat[]
分别基于标签和位置提供对单个值的快速访问,特别是在处理大数据集时,这可能会比使用.loc[]
和.iloc[]
更快。
-
使用
.where()
和.mask()
进行条件替换- 这两个方法允许你根据条件来替换DataFrame中的值。
.where()
方法返回与条件匹配的值,否则返回NaN;而.mask()
方法则相反,它返回与条件不匹配的值,否则返回原始值。
- 这两个方法允许你根据条件来替换DataFrame中的值。
-
使用
.lookup()
进行标签到标签的索引- 在某些早期版本的Pandas中,
.lookup()
方法允许你基于行和列的标签数组来检索值。然而,请注意,这个方法在较新版本的Pandas中可能已被弃用或移除。
- 在某些早期版本的Pandas中,
每种索引方式都有其适用的场景和优缺点,因此在实际应用中,应根据具体需求和数据结构选择最合适的索引方式。