Pandas slice()

Pandas 中的 slice() 方法与 loc[] 属性一起使用,通过其标签或索引选择一行或多行或一列或多列的范围。

示例

import pandas as pd

# create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
})

# select rows from index 0 to index 2 (inclusive) result = df.loc[slice(0, 2)]
print(result) ''' Output A B C 0 1 5 9 1 2 6 10 2 3 7 11 '''

slice() 语法

Pandas 中 slice() 方法的语法是

slice(start, stop, step)

slice() 参数

slice() 方法接受以下参数

  • start (可选) - 起始索引或标签
  • stop (可选) - 停止索引或标签。在 Pandas 中,此终点是包含的
  • step (可选) - 选择每 n 行/列的步长。

slice() 返回值

slice() 方法创建一个 slice 对象,该对象与 .loc[] 一起使用,以返回 DataFrame 的选定子集。


示例 1:使用 slice() 选择行

import pandas as pd

# create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4], 
                                  'B': [5, 6, 7, 8]})

# create a slice object for rows row_slice = slice(1, 3)
# use the slice object with .loc to select a subset of the DataFrame subset_df = df.loc[row_slice] print(subset_df)

输出

   A  B
1  2  6
2  3  7
3  4  8

在这里,当我们在 df DataFrame 上使用 .loc 访问器与 slice(1, 3) 时,它将选择从索引 1 开始直到并包含索引 3 的行。


示例 2:将 slice() 与行标签一起使用

import pandas as pd

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

# use slice() to select rows labeled from 'x' to 'y' result = df.loc[slice('x','y'), :]
print(result)

输出

   A  B
x  2  6
y  3  7

在这里,我们首先使用列 AB 创建了 df DataFrame。 df 的索引标签是 wxyz

我们使用带 slice('x', 'y').loc[] 访问器来选择行。这里的 slice() 方法定义了索引标签的范围。

切片从标签 'x' 开始,以标签 'y' 结束(包含)。行位置中的 : 表示我们想要选择所有行。


示例 3:将 slice() 与列标签一起使用

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12],
    'D': [13, 14, 15, 16]
}, index=['w', 'x', 'y', 'z'])

# use slice() to select columns from 'A' to 'C' result = df.loc[:, slice('A', 'C')]
print(result)

输出

    A   B   C
w  1   5   9
x  2   6  10
y  3   7  11
z  4   8  12

在上面的示例中,我们在 .loc[] 中使用 slice() 来选择列的范围。

在这里,slice('A', 'C') 表示我们从列 A 开始,直到并包含列 C

行位置中的 : 表示我们想要选择所有行。


示例 4:使用 slice() 指定步长

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12],
    'D': [13, 14, 15, 16],
    'E': [17, 18, 19, 20]
}, index=['w', 'x', 'y', 'z'])

# select every second column from 'A' to 'E' result_columns = df.loc[:, slice('A', 'E', 2)]
# select every second row starting from 'w' to 'z' result_rows = df.loc[slice('w', 'z', 2), :]
print("Selected Columns with Step:\n", result_columns) print("\nSelected Rows with Step:\n", result_rows)

输出

Selected Columns with Step:
    A   C   E
w  1   9  17
x  2  10  18
y  3  11  19
z  4  12  20

Selected Rows with Step:
    A  B   C   D   E
w  1  5   9  13  17
y  3  7  11  15  19

这里,

  • result_columns 是通过使用步长 2AE 选择每隔一列获得的。这包括列 ACE
  • result_rows 是通过使用步长 2 从 DataFrame 的开头到结尾(wz)选择每隔一行获得的。这包括行 wy

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战