Pandas 如何通过位置切片Pandas DataFrame

Pandas 如何通过位置切片Pandas DataFrame

在本文中,我们将介绍如何使用Pandas中的位置切片来提取DataFrame中的子集。

阅读更多:Pandas 教程

切片单个行或列

首先,我们可以通过DataFrame的iloc方法使用位置切片提取单个行或列。iloc方法是纯粹基于位置的索引方式,语法如下:

df.iloc[<row-slice>, <column-slice>]

其中,row-slice和column-slice都可以是单个整数、整数列表或切片对象。例如,我们可以通过以下代码来提取第3行和第5行的第2列:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
        'age': [25, 32, 18, 47, 23],
        'city': ['Sydney', 'Melbourne', 'Brisbane', 'Perth', 'Adelaide']}
df = pd.DataFrame(data)

subset = df.iloc[[2,4], 1]
print(subset)

输出为:

2    18
4    23
Name: age, dtype: int64

切片多个行或列

我们还可以使用iloc方法切片多个行或列。下面的代码演示如何提取前3行和第2列到最后一列:

subset = df.iloc[:3, 1:]
print(subset)

输出为:

   age       city
0   25     Sydney
1   32  Melbourne
2   18   Brisbane

基于标签和位置的混合切片

在Pandas中,还可以混合使用标签和位置来切片DataFrame,这需要使用loc方法。与iloc方法不同,loc方法基于标签索引,但也可以通过位置索引来切片。对于loc方法的语法如下:

df.loc[<row-selector>, <column-selector>]

其中,row-selector和column-selector分别是行和列的选择器,可以是标签、位置、布尔条件或它们的组合。如果row-selector或column-selector是位置切片,则它将被解释为闭合范围,即该范围的两侧都是包含的。

下面的代码演示如何使用loc方法基于标签和位置混合切片DataFrame:

# 生成一个新的DataFrame,索引为字母表每个字符
import string
data = {'name': list(string.ascii_lowercase),
        'age': range(26)}
df = pd.DataFrame(data).set_index('name')

# 使用混合切片提取前10行和第2列到第5列
subset = df.loc['a':'j', 'age':'age']
print(subset)

输出为:

   age
name    
a     0
b     1
c     2
d     3
e     4
f     5
g     6
h     7
i     8
j     9

在这个例子中,我们首先生成一个新的DataFrame,其索引为字母表的每个字符。使用loc方法,我们提取了前10行和第2列到第5列。请注意,我们对字母a和j使用标签切片,对age列使用位置切片。

总结

在本文中,我们介绍了如何使用Pandas中的位置切片来提取DataFrame的子集。我们展示了如何使用iloc方法切片单个行或列,并展示了如何使用iloc方法切片多个行或列。我们还介绍了如何混合使用标签和位置来切片DataFrame,这需要使用loc方法。在实际的数据分析过程中,位置切片是非常有用的技能,有助于我们更加灵活地处理数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程