在 Pandas 中,标签(labels)是指用来标识 DataFrame 或 Series 中行和列的唯一标识符。在 Pandas 的数据结构中,标签可以是任意哈希类型的对象,最常见的就是字符串和整数,但也可以是日期时间、元组等。标签在 DataFrame 中构成了行索引和列索引。
行索引和列索引
-
行索引:DataFrame 的行通常由一个索引(index)来标识,这个索引可以是默认的整数索引(从0开始递增),也可以是用户自定义的标签索引。例如,如果你在创建 DataFrame 时指定了
index
参数,那么行就会按照你提供的标签来排序和索引。 -
列索引:DataFrame 的列由列名(column names)构成,这些列名也是标签,通常在创建 DataFrame 时定义,作为字典的键或列表中的元素。
示例
让我们通过一个具体的例子来理解标签的概念:
import pandas as pd
# 使用字典和自定义索引来创建一个 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['person1', 'person2', 'person3'])
# 显示 DataFrame
print(df)
输出的 DataFrame 如下:
Name Age Gender
person1 Alice 25 Female
person2 Bob 30 Male
person3 Charlie 35 Male
在这个例子中:
person1
,person2
,person3
是行的标签,即行索引。Name
,Age
,Gender
是列的标签,即列索引。
使用 .loc
基于标签选取数据
由于 DataFrame 的行和列都有标签,你可以使用 .loc
函数通过这些标签来选取数据:
# 选取单个单元格
print(df.loc['person1', 'Age']) # 输出:25
# 选取整行
print(df.loc['person1'])
# 选取整列
print(df.loc[:, 'Name'])
# 选取多行多列
print(df.loc[['person1', 'person3'], ['Name', 'Age']])
使用 .iloc
基于位置选取数据
.iloc
方法是基于位置的选取,这意味着它使用行和列的数字位置来选择数据。位置编号从0开始:
# 选取单个单元格
print(df.iloc[0, 1]) # 输出:25
# 选取整行
print(df.iloc[0])
# 选取整列
print(df.iloc[:, 0])
# 选取多行多列
print(df.iloc[[0, 2], [0, 1]])
使用布尔索引进行条件筛选
布尔索引允许你基于条件来选取数据,通常涉及到比较运算符:
# 筛选年龄大于30的人
print(df[df['Age'] > 30])
# 筛选女性
print(df[df['Gender'] == 'Female'])
# 多条件筛选
print(df[(df['Age'] > 30) & (df['Gender'] == 'Male')])