Pandas .loc 和 .iloc 与多层索引的数据框

Pandas .loc.iloc 与多层索引的数据框

在本文中,我们将介绍Pandas中.loc.iloc与多层索引的数据框的用法和使用场景。

阅读更多:Pandas 教程

多层索引的数据框

多层索引的数据框是指索引有两个或多个层次结构的数据框。多层索引可以帮助我们更好地组织和理解数据,同时也提供了更多的灵活性,使我们能够更方便地对数据进行操作和分析。

例如,下面是一个由两个层次结构组成的简单数据框:

import pandas as pd

index = pd.MultiIndex.from_arrays([["one", "one", "two", "two"], [1, 2, 1, 2]], names=['first', 'second'])
data = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}, index=index)
Python

这个数据框由firstsecond两个层次结构的索引组成,其中first包含onetwo两个类别,second包含12两个类别。每个索引可以使用.levels属性访问其唯一值:

print(data.index.levels[0])  # ['one', 'two']
print(data.index.levels[1])  # [1, 2]
Python

.loc 的用法

.loc是Pandas中用于显式地访问索引和列的方法。在多层索引的数据框中,我们可以使用.loc访问每个索引层次结构的数据。

单个元素

例如,我们可以使用.loc访问具有特定索引值的单个元素:

print(data.loc[('one', 1), 'A'])  # 1
Python

整个行或列

我们还可以使用.loc访问整个行或列的数据:

print(data.loc['one'])  # 显示 first 层次结构为 `one` 的所有行
# Output:
#         A  B
# second     
# 1       1  5
# 2       2  6

print(data.loc[:, 'A'])  # 显示所有行的 `A` 列数据
# Output:
# first  second
# one    1         1
#        2         2
# two    1         3
#        2         4
Python

整个层次结构

我们还可以使用:表示整个层次结构:

print(data.loc['one', :])  # 显示 first 层次结构为 `one` 的所有行和列
# Output:
#           A  B
# second       
# 1         1  5
# 2         2  6

print(data.loc[:, ('A', 1)])  # 显示所有行中 first 层次结构为 `A`,second 层次结构为 `1` 的列
# Output:
# first
# one    1
# two    3
Python

.iloc 的用法

.iloc是Pandas中用于隐式地访问索引和列的方法。在多层索引的数据框中,我们可以使用.iloc按整数位置访问每个层次结构。

单个元素

例如,我们可以使用.iloc访问具有特定整数位置的单个元素:

print(data.iloc[0, 0])  # 1
Python

整个行或列

我们还可以使用.iloc访问整个行或列的数据:

print(data.iloc[0])  # 显示具有整数位置为 0 的所有行
# Output:
# A    1
# B    5
# Name: (one, 1), dtype: int64

print(data.iloc[:, 0])  # 显示所有行的第一列数据:
Python
print(data.iloc[:, 0])  # 显示所有行的第一列数据
# Output:
# first  second
# one    1         1
# 2         2
# two    1         3
# 2         4
Python

整个层次结构

我们还可以使用整数位置访问整个层次结构:

print(data.iloc[0, :])  # 显示具有整数位置为 0 的所有行和列
# Output:
# A    1
# B    5
# Name: (one, 1), dtype: int64

print(data.iloc[:, 0:2])  # 显示所有行的前两列数据
# Output:
# A  B
# first second
# one   1     1  5
# 2     2  6
# two   1     3  7
# 2     4  8
Python

.loc.iloc 的区别

.loc.iloc的区别在于.loc使用索引标签进行访问,而.iloc使用整数位置进行访问。这意味着.iloc只能使用整数位置进行访问,并且不能访问标签类型的索引。相反,.loc只能使用标签进行访问,并且不能使用整数位置进行访问。

例如,如果我们从具有标签和整数位置索引的数据框中选择一个单元格,则会得到不同的结果:

data2 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}, index=[1, 2, 3, 4])

print(data2.loc[1, 'A'])  # 1
print(data2.iloc[0, 0])  # 1
Python

总结

在多层索引的数据框中,我们可以使用.loc.iloc方法按标签或整数位置访问数据。.loc使用索引标签进行访问,.iloc使用整数位置进行访问。这两种方法是在Pandas数据分析中非常有用的工具,尤其是当我们需要访问具有多个层次结构的索引时,它们的效果尤为明显。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册