pandas.core.groupby.DataFrameGroupBy.nth#
- property DataFrameGroupBy.nth[源代码]#
如果 n 是整数,则从每个组中取第 n 行,否则取行的子集。
可以是调用或索引。使用索引符号时,不能使用 dropna。索引符号接受逗号分隔的整数列表和切片。
如果 dropna,将取第 n 个非空行,dropna 可以是 ‘all’ 或 ‘any’;这等价于在 groupby 之前调用 dropna(how=dropna)。
- 参数:
- nint, slice 或 int 和 slices 的列表
单个 nth 值用于行或一个 nth 值或切片的列表。
在 1.4.0 版本发生变更: 添加了切片和包含切片的列表。添加了索引表示法。
- dropna{‘any’, ‘all’, None}, 默认 None
在计算哪一行是第 n 行之前应用指定的 dropna 操作。仅在 n 为整数时支持。
- 返回:
- Series 或 DataFrame
每个组内的第N个值。
参见
Series.groupby
对一个Series应用一个groupby函数。
DataFrame.groupby
对DataFrame的每一行或每一列应用一个groupby函数。
示例
>>> 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: []