【Pandas】pandas DataFrame take

Pandas2.2 DataFrame

Reindexing selection label manipulation

方法 描述
DataFrame.add_prefix(prefix[, axis]) 用于在 DataFrame 的行标签或列标签前添加指定前缀的方法
DataFrame.add_suffix(suffix[, axis]) 用于在 DataFrame 的行标签或列标签后添加指定后缀的方法
DataFrame.align(other[, join, axis, level, …]) 用于对齐两个 DataFrameSeries 的方法
DataFrame.at_time(time[, asof, axis]) 用于筛选 特定时间点 的行的方法
DataFrame.between_time(start_time, end_time) 用于筛选 指定时间范围内的数据行 的方法
DataFrame.drop([labels, axis, index, …]) 用于从 DataFrame 中删除指定行或列的方法
DataFrame.drop_duplicates([subset, keep, …]) 用于删除重复行的方法
DataFrame.duplicated([subset, keep]) 用于检测 重复行 的方法
DataFrame.equals(other) 用于比较两个 DataFrame 是否完全相等的方法
DataFrame.filter([items, like, regex, axis]) 用于筛选列或行标签的方法
DataFrame.first(offset) 用于选取 时间序列型 DataFrame 中从起始时间开始的一段连续时间窗口 的方法
DataFrame.head([n]) 用于快速查看 DataFrame 前几行数据 的方法
DataFrame.idxmax([axis, skipna, numeric_only]) 用于查找 每列或每行中最大值的索引标签 的方法
DataFrame.idxmin([axis, skipna, numeric_only]) 用于查找 每列或每行中最小值的索引标签 的方法
DataFrame.last(offset) 用于选取 时间序列型 DataFrame 中从最后时间点开始向前截取一段指定长度的时间窗口 的方法
DataFrame.reindex([labels, index, columns, …]) 用于重新索引 DataFrame 的核心方法
DataFrame.reindex_like(other[, method, …]) 用于将当前 DataFrame 的索引和列重新设置为与另一个对象(如另一个 DataFrame 或 Series)相同
DataFrame.rename([mapper, index, columns, …]) 用于重命名 DataFrame 的行索引标签或列名的方法
DataFrame.rename_axis([mapper, index, …]) 用于**重命名 DataFrame 的索引轴名称(index axis name)或列轴名称(column axis name)**的方法
DataFrame.reset_index([level, drop, …]) 用于将 DataFrame 的索引(index)重置为默认整数索引,并将原索引作为列添加回 DataFrame 中的方法
DataFrame.sample([n, frac, replace, …]) 用于从 DataFrame 中随机抽取样本行或列的方法
DataFrame.set_axis(labels, *[, axis, copy]) 用于**设置 DataFrame 的行索引(index)或列标签(columns)**的方法
DataFrame.set_index(keys, *[, drop, append, …]) 用于**将 DataFrame 中的一个或多个列设置为新的索引(index)**的方法
DataFrame.tail([n]) 用于快速查看 DataFrame 最后几行数据的方法
DataFrame.take(indices[, axis]) 用于按位置索引选取 DataFrame 中的行或列的方法

pandas.DataFrame.take(indices[, axis])

pandas.DataFrame.take() 是一个用于按位置索引选取 DataFrame 中的行或列的方法。它与 NumPy 的 take() 方法行为一致,适用于根据整数位置快速提取子集,常用于数据切片、索引操作和底层数组处理。


方法签名
DataFrame.take(indices, *, axis=0)

参数说明
参数 类型 说明
indices 整数列表或一维数组 要提取的位置索引(基于位置,不是标签)
axis {0/'index', 1/'columns'},默认为 0 指定是按行选取(axis=0)还是按列选取(axis=1

⚠️ indices基于整数位置 的索引(即从 0 开始),而不是标签索引(如字符串 'A' 或日期)。


✅ 返回值
  • 返回一个新的 DataFrame,包含指定位置的行或列;
  • 不会修改原始对象;
  • 支持负数索引(表示从末尾开始计数)。

示例代码及结果
示例 1:基本用法 - 按位置选取行(axis=0)
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [10, 20, 30, 40]
}, index=['x', 'y', 'z', 'w'])

print("Original DataFrame:")
print(df)

# 取第 0 行和第 2 行(基于位置)
selected_rows = df.take([0, 2])
print("\nTake rows at positions 0 and 2:")
print(selected_rows)
输出结果:
Original DataFrame:
   A   B
x  1  10
y  2  20
z  3  30
w  4  40

Take rows at positions 0 and 2:
   A   B
x  1  10
z  3  30

示例 2:按位置选取列(axis=1)
# 取第 0 列和第 1 列(基于列的位置)
selected_cols = df.take([0, 1], axis=1)
print("\nTake columns at positions 0 and 1:")
print(selected_cols)
输出结果:
Take columns at positions 0 and 1:
   A   B
x  1  10
y  2  20
z  3  30
w  4  40

示例 3:使用负数索引(从末尾开始取)
# 取最后两行
last_two_rows = df.take([-2, -1])
print("\nTake last two rows using negative indices:")
print(last_two_rows)
输出结果:
Take last two rows using negative indices:
   A   B
z  3  30
w  4  40

示例 4:混合正负索引(顺序不影响输出顺序)
# 混合索引:取第 1 行、倒数第 2 行、第 3 行
mixed_indices = df.take([1, -2, 3])
print("\nTake rows with mixed indices [1, -2, 3]:")
print(mixed_indices)
输出结果:
Take rows with mixed indices [1, -2, 3]:
   A   B
y  2  20
z  3  30
w  4  40

示例 5:选取部分列并保留原索引
# 选取第一列('A')和第二列('B')
selected_columns = df.take([0, 1], axis=1)
print("\nTake first two columns (axis=1):")
print(selected_columns)
输出结果:
Take first two columns (axis=1):
   A   B
x  1  10
y  2  20
z  3  30
w  4  40

应用场景
  • 基于位置的数据抽取:当只有整数索引可用时(如 NumPy 数组转换后);
  • 排序后提取极值行:如结合 argsort() 后使用 take() 提取最大/最小几行;
  • 数据划分:在不打乱原索引的前提下提取特定位置样本;
  • 底层操作兼容性:与 NumPy 兼容的索引方式,适合底层算法集成;
  • 链式调用中提取子集:如 df.sort_values(...).take([0, -1]) 提取首尾行。

⚠️ 注意事项
  • take() 使用的是整数位置索引,不是标签索引;
  • 支持负数索引(从末尾开始);
  • 不会自动检查越界,若 indices 超出范围会抛出异常;
  • 默认作用于行(axis=0),如需选列请设置 axis=1
  • 不会修改原始 DataFrame,返回新对象;
  • 推荐用于结构化数据处理,避免用于非结构化数据。

你可能感兴趣的:(DataFrame,pandas,python,数据挖掘)