pandas.core.groupby.DataFrameGroupBy.nth#

property DataFrameGroupBy.nth[源代码]#

如果 n 是整数,则取每个组的第 n 行,否则取行的子集。

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

如果 dropna,则取第 n 个非空行;dropna 是 ‘all’ 或 ‘any’;这等效于在分组之前调用 dropna(how=dropna)。

Parameters:
nint、slice 或 ints 和 slices 的列表

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

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

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

在计算第 n 行之前应用指定的 dropna 操作。仅当 n 是整数时支持。

Returns:
Series 或 DataFrame

每个组内的第 n 个值。

参见

Series.groupby

将函数 groupby 应用于 Series。

DataFrame.groupby

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

Examples

>>> 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: []