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