Obtenir des première et deuxième valeurs les plus élevées dans les pandas colonnes

Je suis en utilisant des pandas pour analyser certains résultats de l'élection. J'ai un DF, les Résultats, qui a une ligne pour chaque circonscription et des colonnes représentant les votes pour les différentes parties (plus de 100 d'entre eux):

In[60]: Results.columns
Out[60]: 
Index(['Constituency', 'Region', 'Country', 'ID', 'Type', 'Electorate',
       'Total', 'Unnamed: 9', '30-50', 'Above',
       ...
       'WP', 'WRP', 'WVPTFP', 'Yorks', 'Young', 'Zeb', 'Party', 'Votes',
       'Share', 'Turnout'],
      dtype='object', length=147) 

Donc...

In[63]: Results.head()
Out[63]: 
                         Constituency    Region   Country         ID    Type  \
PAID                                                                           
1                            Aberavon     Wales     Wales  W07000049  County   
2                           Aberconwy     Wales     Wales  W07000058  County   
3                      Aberdeen North  Scotland  Scotland  S14000001   Burgh   
4                      Aberdeen South  Scotland  Scotland  S14000002   Burgh   
5     Aberdeenshire West & Kincardine  Scotland  Scotland  S14000058  County   

      Electorate  Total  Unnamed: 9  30-50  Above    ...     WP  WRP  WVPTFP  \
PAID                                                 ...                       
1          49821  31523         NaN    NaN    NaN    ...    NaN  NaN     NaN   
2          45525  30148         NaN    NaN    NaN    ...    NaN  NaN     NaN   
3          67745  43936         NaN    NaN    NaN    ...    NaN  NaN     NaN   
4          68056  48551         NaN    NaN    NaN    ...    NaN  NaN     NaN   
5          73445  55196         NaN    NaN    NaN    ...    NaN  NaN     NaN   

      Yorks  Young  Zeb  Party  Votes     Share   Turnout  
PAID                                                       
1       NaN    NaN  NaN    Lab  15416  0.489040  0.632725  
2       NaN    NaN  NaN    Con  12513  0.415052  0.662230  
3       NaN    NaN  NaN    SNP  24793  0.564298  0.648550  
4       NaN    NaN  NaN    SNP  20221  0.416490  0.713398  
5       NaN    NaN  NaN    SNP  22949  0.415773  0.751528  

[5 rows x 147 columns]

Par circonscription les résultats pour chaque partie sont donnés dans les colonnes Results.ix[:, 'Unnamed: 9': 'Zeb']

Je peux trouver de la partie gagnante (c'est à dire la partie qui a interrogé plus grand nombre de votes) et le nombre de voix qu'il interrogé à l'aide de:

RawResults = Results.ix[:, 'Unnamed: 9': 'Zeb']
Results['Party'] = RawResults.idxmax(axis=1)
Results['Votes'] = RawResults.max(axis=1).astype(int)

Mais, j'ai aussi besoin de savoir combien de votes de la deuxième partie (et, idéalement, de son index/nom). Donc, il y a de toute façon pandas à retourner le deuxième valeur la plus élevée/index dans un ensemble de colonnes pour chaque ligne?

Voir nlargest.
Sûrement df.nlargest(colonne) sera de retour à la n des grandes valeurs dans une colonne, alors que je veux le faire sur une ligne?
Ensuite, utilisez transpose?
c'est une bonne direction (je suppose), mais c'est compliqué et pourrait être difficile...

OriginalL'auteur TimGJ | 2016-08-21