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
在这里,我们首先使用列 A
和 B
创建了 df DataFrame。 df 的索引标签是 w
、x
、y
和 z
。
我们使用带 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 是通过使用步长 2 从
A
到E
选择每隔一列获得的。这包括列A
、C
和E
。 - result_rows 是通过使用步长 2 从 DataFrame 的开头到结尾(
w
到z
)选择每隔一行获得的。这包括行w
和y
。