Есть ли в Python3 функция для копирования 3 самых маленьких значений в строке во фрейм данных для m строк? - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь найти три наименьших значения для каждой строки кадра данных и поместить их в отдельный кадр данных. Мне не нужно знать, из какого столбца они пришли, но мне нужно циклически проходить по m строкам, где m может меняться для каждого используемого фрейма данных.

Я хотел использовать heaps.nsmallest, но я не уверен, как циклически проходить по каждой строке и каждый раз добавлять результаты в новую строку кадра данных. Я, кажется, просто получить одну строку результатов в качестве вывода.

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

Я ожидал, что это переберет значения x, но он выдаст только один столбец со строками len (df1). Я думаю, что он перезаписывает предыдущие результаты, поскольку он всегда дает три минимальных значения из последней строки.

1 Ответ

1 голос
/ 27 мая 2019
df2 = pd.DataFrame([heapq.nsmallest(3, df1[x])
                   for x in range(len(df1))])

или используйте sorted(df1[x])[:3]

...