2017-09-14 66 views
2

阿拉巴馬1拜恩找到最大值,布拉德利68.16 68.16 0.0 LeFlore,伯頓31.71 31.71 0.0 未知0.13 0.13 0.0在一列和顯示從另一行

我有一個數據集,看起來像這樣:

STATE | DISTRICT | CANDIDATE NAME | GENERAL VOTE 
Alabama | 1 | Byrne, Bradley | 68.16 
Alabama | 1 | LeFlore, Burton R. | 31.71 
Alabama | 1 | Unknown | 0.13 
Alabama | 2 | Name | 65.43 
Alabama | 2 | Name | 0.13 

我必須按州和地區分組,因爲每個州都有多個地區,州有很多州。我已經做到了。 但是,我需要找到每個分組的最大值,並顯示與此最大值一致的候選名稱。我還必須顯示每個分組中最大和最小普通投票的區別。我已經做了一些這方面已經但是我堅持

df_out = dfworking.groupby(["STATE", "D", "CANDIDATE NAME"])['GENERAL PERCENT'].agg(['max','min']) 
df_out['Margin'] = df_out['max']-df_out['min'] 
df_new_out = dfworking.groupby(['STATE','D'])['GENERAL PERCENT'].max() 

我不知道如何顯示保證金柱,以及在同一個數據幀的最大投票一致的名稱。 謝謝!

回答

2

通知 - 在STATEDISTRICTGENERAL VOTE列中的值必須首先排序。

#sorting 
dfworking = dfworking.sort_values(['STATE','DISTRICT','GENERAL VOTE'], 
            ascending=[True, True, False]) 

#get index of max value in GENERAL VOTE column 
df1 = dfworking.groupby(["STATE", "DISTRICT"])['GENERAL VOTE'].idxmax() 
#create new column - not matched value return NaN 
dfworking['cand'] = dfworking.loc[df1, 'CANDIDATE NAME'] 
#replace NaN by forward filling 
dfworking['cand'] = dfworking['cand'].ffill() 

print (dfworking) 
    STATE DISTRICT  CANDIDATE NAME GENERAL VOTE   cand 
0 Alabama   1  Byrne, Bradley   68.16 Byrne, Bradley 
1 Alabama   1 LeFlore, Burton R.   31.71 Byrne, Bradley 
2 Alabama   1    Unknown   0.13 Byrne, Bradley 
3 Alabama   2    Name   65.43   Name 
4 Alabama   2    Name   0.13   Name 

另一種解決方案是創建df頂級候選人,join原始:

df1 = dfworking.loc[dfworking.groupby(["STATE", "DISTRICT"])['GENERAL VOTE'].idxmax()] 
df1 = df1.set_index(['STATE','DISTRICT'])['CANDIDATE NAME'].rename('cand') 
dfworking = dfworking.join(df1, on=['STATE','DISTRICT']) 
print (dfworking) 
    STATE DISTRICT  CANDIDATE NAME GENERAL VOTE   cand 
0 Alabama   1  Byrne, Bradley   68.16 Byrne, Bradley 
1 Alabama   1 LeFlore, Burton R.   31.71 Byrne, Bradley 
2 Alabama   1    Unknown   0.13 Byrne, Bradley 
3 Alabama   2    Name   65.43   Name 
4 Alabama   2    Name   0.13   Name 
+1

謝謝,正是我需要擺脫這種困境:) –

+1

很高興能幫助;) – jezrael

相關問題