Pandas 标签索引
在Pandas中,标签索引(Label-based Indexing)是一种基于行或列的标签来选择数据的方式。与传统的基于位置的索引不同,标签索引允许你使用直观的标签来访问数据,这使得数据操作更加灵活和易读。
什么是标签索引?
Pandas中的标签索引主要通过.loc
属性来实现。.loc
允许你使用行和列的标签来选择数据。与.iloc
(基于位置的索引)不同,.loc
是基于标签的,因此你可以使用行和列的名称来访问数据。
基本用法
假设我们有一个简单的DataFrame:
python
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [24, 27, 22, 32],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)
这个DataFrame看起来像这样:
Age City
Name
Alice 24 New York
Bob 27 Los Angeles
Charlie 22 Chicago
David 32 Houston
选择单行
要选择单行数据,可以使用.loc
并传入行标签:
python
alice_data = df.loc['Alice']
print(alice_data)
输出:
Age 24
City New York
Name: Alice, dtype: object
选择多行
你可以通过传递一个标签列表来选择多行:
python
multiple_rows = df.loc[['Alice', 'Charlie']]
print(multiple_rows)
输出:
Age City
Name
Alice 24 New York
Charlie 22 Chicago
选择特定列
你还可以选择特定的列:
python
ages = df.loc[:, 'Age']
print(ages)
输出:
Name
Alice 24
Bob 27
Charlie 22
David 32
Name: Age, dtype: int64
选择行和列
你可以同时选择行和列:
python
alice_age = df.loc['Alice', 'Age']
print(alice_age)
输出:
24
实际应用场景
数据筛选
假设你有一个包含学生成绩的DataFrame,你想筛选出所有数学成绩大于90分的学生:
python
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Math': [95, 85, 92, 88],
'Science': [89, 91, 87, 94]
}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)
high_math_scores = df.loc[df['Math'] > 90]
print(high_math_scores)
输出:
Math Science
Name
Alice 95 89
Charlie 92 87
数据更新
你可以使用.loc
来更新DataFrame中的特定值。例如,将Bob的数学成绩更新为90:
python
df.loc['Bob', 'Math'] = 90
print(df)
输出:
Math Science
Name
Alice 95 89
Bob 90 91
Charlie 92 87
David 88 94
总结
Pandas的标签索引(.loc
)是一个非常强大的工具,它允许你使用直观的标签来选择和操作数据。通过.loc
,你可以轻松地选择单行、多行、特定列,甚至同时选择行和列。此外,.loc
还可以用于数据筛选和更新,使得数据处理更加灵活和高效。
附加资源
练习
- 创建一个包含学生姓名、数学成绩和科学成绩的DataFrame,并使用
.loc
筛选出科学成绩大于90分的学生。 - 使用
.loc
更新DataFrame中某个学生的数学成绩。 - 尝试使用
.loc
选择多行和多列,并观察输出结果。
通过练习,你将更好地掌握Pandas标签索引的使用方法。