pandas.core.groupby.GroupBy.nth#

final GroupBy.nth(n, dropna=None)[源代码]#

如果n是整型,则取每组中的第n行,否则为行子集。

可以是调用,也可以是索引。Dropna不适用于索引表示法。索引表示法接受以逗号分隔的整数和切片列表。

如果Dropna将取第n个非空行,则DropNA为‘all’或‘any’;这等效于在Groupby之前调用DropNA(How=Dropna)。

参数
n整型、片型或整型和片型列表

行的单个第n个值或第n个值或切片的列表。

在 1.4.0 版更改: 添加了切片和包含切片的列表。添加了索引表示法。

dropna{‘Any’,‘all’,None},默认为None

在计算第n行是第n行之前应用指定的Dropna操作。仅当n为整型时才受支持。

退货
系列或DataFrame

每个组内的第n个值。

参见

Series.groupby

将函数GROUPBY应用于系列。

DataFrame.groupby

将函数GROUPBY应用于DataFrame的每行或每列。

示例

>>> df = pd.DataFrame({'A': [1, 1, 2, 1, 2],
...                    'B': [np.nan, 2, 3, 4, 5]}, columns=['A', 'B'])
>>> g = df.groupby('A')
>>> g.nth(0)
     B
A
1  NaN
2  3.0
>>> g.nth(1)
     B
A
1  2.0
2  5.0
>>> g.nth(-1)
     B
A
1  4.0
2  5.0
>>> g.nth([0, 1])
     B
A
1  NaN
1  2.0
2  3.0
2  5.0
>>> g.nth(slice(None, -1))
     B
A
1  NaN
1  2.0
2  3.0

也可以使用索引记数法

>>> g.nth[0, 1]
     B
A
1  NaN
1  2.0
2  3.0
2  5.0
>>> g.nth[:-1]
     B
A
1  NaN
1  2.0
2  3.0

指定 dropna 允许忽略计数 NaN

>>> g.nth(0, dropna='any')
     B
A
1  2.0
2  3.0

NAN表示使用DropNA时耗尽的组

>>> g.nth(3, dropna='any')
    B
A
1 NaN
2 NaN

指定 as_index=False 在……里面 groupby 保留原始索引。

>>> df.groupby('A', as_index=False).nth(1)
   A    B
1  1  2.0
4  2  5.0