У меня есть очень большой фрейм данных pandas примерно с 500 000 столбцов. Каждый столбец содержит около 500 элементов. Для каждого столбца мне нужно получить расположение (индекс, столбец) элементов top-k в столбце.
Итак, если бы k было равно 2, и это был бы мой фрейм данных:
A B C D
w 4 8 10 2
x 5 1 1 6
y 9 22 25 7
z 15 5 7 2
Я хотел бы вернуться:
[(A,y),(A,z),(B,w),(B,y),(C,w),(C,y),(D,x),(D,y)]
Имейте в виду, что у меня около 500 000 столбцов, поэтому скорость — моя главная задача. Есть ли разумный способ сделать это, который не займет целую неделю на моей машине? Каков самый быстрый способ - даже если он будет достаточно быстрым для того объема данных, который у меня есть?
Спасибо за помощь!
df.apply(lambda x: x.sort(inplace=False, ascending=False)[:2])
вернет то, что вы хотите, но значенияNaN
немного громоздки и, вероятно, не то, что вы хотите - person EdChum   schedule 24.08.2015