pyspark.pandas.DataFrame.nlargest ¶
-
DataFrame.
nlargest
( n : int , columns : Union[Any, Tuple[Any, …], List[Union[Any, Tuple[Any, …]]]] , keep : str = 'first' ) → pyspark.pandas.frame.DataFrame [source] ¶ -
返回按 列 降序排列的前 n 行。
返回具有最大值的前 n 行,按降序排列。未指定的列也会返回,但不会用于排序。
此方法等同于
df.sort_values(columns, ascending=False).head(n)
,但在 pandas 中更高效。 在 pandas-on-Spark 中,由于 Spark 的延迟执行和查询优化器,两者性能相同。- Parameters
-
- n int
-
要返回的行数。
- columns label or list of labels
-
要排序的列标签。
- keep {‘first’, ‘last’}, default ‘first’. ‘all’ is not implemented yet.
-
确定保留哪些重复项(如果有)。 -
first
: 保留第一次出现的内容。 -last
: 保留最后一次出现的内容。
- Returns
-
- DataFrame
-
按给定列降序排列的前 n 行。
另请参阅
-
DataFrame.nsmallest
-
返回按 列 升序排列的前 n 行。
-
DataFrame.sort_values
-
按值对DataFrame进行排序。
-
DataFrame.head
-
返回前 n 行而不重新排序。
注释
此函数不能用于所有列类型。例如,当指定具有 对象 或 类别 数据类型的列时,会引发
TypeError
。示例
>>> df = ps.DataFrame({'X': [1, 2, 3, 5, 6, 7, np.nan], ... 'Y': [6, 7, 8, 9, 10, 11, 12]}) >>> df X Y 0 1.0 6 1 2.0 7 2 3.0 8 3 5.0 9 4 6.0 10 5 7.0 11 6 NaN 12
在下面的示例中,我们将使用
nlargest
来选择列“X”中具有最大值的三行。>>> df.nlargest(n=3, columns='X') X Y 5 7.0 11 4 6.0 10 3 5.0 9
要按列“Y”中的最大值,然后是“X”排序,我们可以像在下一个示例中那样指定多个列。
>>> df.nlargest(n=3, columns=['Y', 'X']) X Y 6 NaN 12 5 7.0 11 4 6.0 10
下面的示例展示了如何处理并列情况,这由 keep 决定。
>>> tied_df = ps.DataFrame({'X': [1, 2, 2, 3, 3]}, index=['a', 'b', 'c', 'd', 'e']) >>> tied_df X a 1 b 2 c 2 d 3 e 3
当使用 keep=’first’(默认)时,平局按顺序解决:
>>> tied_df.nlargest(3, 'X') X d 3 e 3 b 2
>>> tied_df.nlargest(3, 'X', keep='first') X d 3 e 3 b 2
当使用 keep='last' 时,平局按相反顺序解决:
>>> tied_df.nlargest(3, 'X', keep='last') X e 3 d 3 c 2