跳到主要内容

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还可以用于数据筛选和更新,使得数据处理更加灵活和高效。

附加资源

练习

  1. 创建一个包含学生姓名、数学成绩和科学成绩的DataFrame,并使用.loc筛选出科学成绩大于90分的学生。
  2. 使用.loc更新DataFrame中某个学生的数学成绩。
  3. 尝试使用.loc选择多行和多列,并观察输出结果。

通过练习,你将更好地掌握Pandas标签索引的使用方法。