整个 Pandas DF 中最小 n 值的索引

Indices of smallest n values over whole Pandas DF

我正在寻找一种有效的方法来提取整个数据帧中 n 个最小值的索引。

例如,给定以下 n = 2 的 df:

    colA    colB    colC
r1   33      75      22
r2    1      52      95
r3   71       7      68

我想以某种形式获得与整个 df 中的 2 个最小值相对应的索引 [(r2, colA), (r3, colB)]:1 和 7。

索引之间的顺序并不重要(对应的值可能没有排序)。

谢谢!

nsmallest -

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.nsmallest.html

import pandas as pd
df=pd.DataFrame({"colA":[33,1,71],"colB":[75,52,7],"colC":[22,95,68]})

df.apply(pd.Series.nsmallest, axis=1, n=1)

df.apply(pd.Series.nsmallest, axis=1, n=2)

除了Neo的回答,同时,我找到了以下解决方案:

n=2
list(df.stack().sort_values().head(n).index)

df.min

import pandas as pd
df=pd.DataFrame({"colA":[33,1,71],"colB":[75,52,7],"colC":[22,95,68]})

#The min value for each numerical column in the dataframe
df.min(numeric_only=True)

#The minimum value in the entire dataframe
df.min(numeric_only=True).min()