pandas.core.groupby.SeriesGroupBy.nth #

属性 SeriesGroupBy。第 n 个[来源] #

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

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

如果 dropna,将取第 n 个非空行,dropna 是 'all' 或 'any';这相当于在 groupby 之前调用 dropna(how=dropna) 。

参数
n整数、切片或整数和切片的列表

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

版本 1.4.0 中更改:添加了切片和包含切片的列表。添加了索引符号。

dropna {'any', 'all', None}, 默认 None

在计算哪一行是第 n 行之前应用指定的 dropna 操作。仅当 n 为 int 时才受支持。

返回
系列或数据框

每组内的第 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)
   A   B
0  1 NaN
2  2 3.0
>>> g.nth(1)
   A   B
1  1 2.0
4  2 5.0
>>> g.nth(-1)
   A   B
3  1 4.0
4  2 5.0
>>> g.nth([0, 1])
   A   B
0  1 NaN
1  1 2.0
2  2 3.0
4  2 5.0
>>> g.nth(slice(None, -1))
   A   B
0  1 NaN
1  1 2.0
2  2 3.0

也可以使用索引符号

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

指定dropna允许忽略NaN

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

当指定的数据n大于任何组时,返回一个空的DataFrame

>>> g.nth(3, dropna='any')
Empty DataFrame
Columns: [A, B]
Index: []