查找数据框中每列的最高 n 值

d_g*_*gnz 5 python python-3.x pandas

我想找到数据框中每列的最高 3 个值,并返回按值排序的索引名称。数据框如下所示:

df = pd.DataFrame({"u1":[1,2,-3,4,5],
                   "u2":[8,-4,5,6,7],
                   "u3":[np.NaN,np.NaN,np.NaN,np.NaN,np.NaN]},
                   index=["q1","q2","q3","q4","q5"])
Run Code Online (Sandbox Code Playgroud)

结果如下所示:

u1   u2   u3
q5   q1   NaN
q4   q5   NaN
q2   q4   NaN
Run Code Online (Sandbox Code Playgroud)

Dis*_*ani 5

您可以使用applywithpandas.Series.nlargest功能。

df.apply(lambda x: pd.Series(x.nlargest(3).index))
   u1  u2   u3
0  q5  q1  NaN
1  q4  q5  NaN
2  q2  q4  NaN
Run Code Online (Sandbox Code Playgroud)