pandas.core.groupby.DataFrameGroupBy.take#

DataFrameGroupBy.take(indices, **kwargs)[源代码][源代码]#

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

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

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

参数:
索引array-like

一个表示要取哪些位置的整数数组。

**kwargs

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

返回:
DataFrame

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

参见

DataFrame.take

沿轴从 Series 中提取元素。

DataFrame.loc

通过标签选择DataFrame的一个子集。

DataFrame.iloc

按位置选择DataFrame的一个子集。

numpy.take

沿轴从数组中提取元素。

例子

>>> 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行和第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

我们可以使用负整数来获取元素,从对象的末尾开始,就像使用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