Python3 中是否有一个函数可以将一行中的 3 个最小值复制到数据框中,用于 m 行?

Is there a function in Python3 to copy the 3 smallest values in a row into a data frame, for m rows?

我试图为数据框的每一行找到三个最小值,并将它们放在一个单独的数据框中。我不需要知道它们来自哪一列,但我确实需要循环遍历 m 行,其中 m 可能会因我使用的每个数据帧而改变。

我想使用 heaps.nsmallest,但我不确定如何遍历每一行并将结果每次都添加到数据帧的新行中。我似乎只得到一行结果作为输出。

 for x in range(len(df1)):
        heap=pd.DataFrame(heapq.nsmallest(3, df1[x]))

我预计这会循环遍历 x 的值,但它只生成一个包含 len(df1) 行的列。我认为它覆盖了以前的结果,因为它总是给出最后一行的三个最小值。

df2 = pd.DataFrame([heapq.nsmallest(3, df1[x])
                   for x in range(len(df1))])

或者,使用 sorted(df1[x])[:3]