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