Python pandas выберите 2 лучших из каждого столбца - PullRequest
1 голос
/ 04 мая 2020

У меня гигантский фрейм данных:

Na  Col1    Col2    Col3    Col4
A    77      42      88     
B    31              64     
C    86      79      79      99 
D            94      8       95 
E    95      40      27     
F    92      71      32 

Я хочу выбрать 2 верхних из каждого столбца, чтобы создать следующее:

Na  Col1    Col2    Col3    Col4
A                   88  
C           79      79      99 
D           94              95
E    95             
F    92     

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

1 Ответ

3 голосов
/ 04 мая 2020

Похоже, что вы можете просто использовать nlargest в каждом столбце, установив n=2 для получения 2 верхних элементов.

df.set_index('Na').apply(pd.Series.nlargest, n=2)

   Col1  Col2  Col3  Col4
A   NaN   NaN  88.0   NaN
C   NaN  79.0   NaN  99.0
D   NaN  94.0  88.0  95.0
E  95.0   NaN   NaN   NaN
F  92.0   NaN   NaN   NaN
...