pandas.core.groupby.DataFrameGroupBy.take#

DataFrameGroupBy.take(indices, axis=_NoDefault.no_default, **kwargs)[源代码]#

返回每个组中指定*位置*索引的元素。

这意味着我们不是根据对象的 index 属性中的实际值进行索引。我们是根据元素在对象中的实际位置进行索引。

如果某个组请求的索引不存在,此方法将引发错误。若要获得忽略不存在索引的类似行为,请参阅 DataFrameGroupBy.nth()

Parameters:
indices类数组

一个整数数组,指示要取哪些位置。

axis{0 或 ‘index’, 1 或 ‘columns’, None},默认 0

选择元素的轴。0 表示我们正在选择行,1 表示我们正在选择列。

自 2.1.0 版本弃用: 对于 axis=1,在底层对象上操作。否则 axis 关键字不是必需的。

**kwargs

为与 numpy.take() 保持兼容。对输出没有影响。

Returns:
DataFrame

一个从每个组中提取元素的 DataFrame。

参见

DataFrame.take

沿着轴从 Series 中提取元素。

DataFrame.loc

按标签选择 DataFrame 的子集。

DataFrame.iloc

按位置选择 DataFrame 的子集。

numpy.take

沿轴从数组中获取元素。

Examples

>>> df = pd.DataFrame([('falcon', 'bird', 389.0),
...                    ('parrot', 'bird', 24.0),
...                    ('lion', 'mammal', 80.5),
...                    ('monkey', 'mammal', np.nan),
...                    ('rabbit', 'mammal', 15.0)],
...                   columns=['name', 'class', 'max_speed'],
...                   index=[4, 3, 2, 1, 0])
>>> df
     name   class  max_speed
4  falcon    bird      389.0
3  parrot    bird       24.0
2    lion  mammal       80.5
1  monkey  mammal        NaN
0  rabbit  mammal       15.0
>>> gb = df.groupby([1, 1, 2, 2, 2])

沿着轴 0(默认)提取位置 0 和 1 的元素。

请注意,结果中选取的索引与我们的输入索引 0 和 1 不对应。这是因为我们选择的是第 0 行和第 1 行,而不是索引等于 0 和 1 的行。

>>> gb.take([0, 1])
       name   class  max_speed
1 4  falcon    bird      389.0
  3  parrot    bird       24.0
2 2    lion  mammal       80.5
  1  monkey  mammal        NaN

指定索引的顺序会影响结果的顺序。这里,顺序与前面的示例交换了。

>>> gb.take([1, 0])
       name   class  max_speed
1 3  parrot    bird       24.0
  4  falcon    bird      389.0
2 1  monkey  mammal        NaN
  2    lion  mammal       80.5

沿轴 1(列选择)选择索引为 1 和 2 的元素。

我们可以使用负整数来获取正索引的元素,就像 Python 列表一样,从对象的末尾开始。

>>> gb.take([-1, -2])
       name   class  max_speed
1 3  parrot    bird       24.0
  4  falcon    bird      389.0
2 0  rabbit  mammal       15.0
  1  monkey  mammal        NaN