2017-07-30 68 views
0

另一個專欄中,我有一個數據幀共同值除以2點的值在數據幀的一列,提供它的片斷:基於Python中

Year  Result  Count 
2000  lost   5 
2000  won   16 
2001  lost   12 
2001  won   22 
2002  lost   15 
2002  won   15 
2003  lost   12 
2003  tied   1 
2003  won   13 
2004  lost   8 
2004  won   20 

我想創建一年明智雙贏的列表/損失率。我知道如何使用字典和循環來做到這一點。 但是最好的辦法是什麼。

回答

2

這裏有兩個選項:

選項1pivot + division,使用pivotwontielost創建單獨的列,然後由lost列劃分won柱:

df.pivot("Year", "Result", "Count").pipe(lambda x: x.won/x.lost) 

#Year 
#2000 3.200000 
#2001 1.833333 
#2002 1.000000 
#2003 1.083333 
#2004 2.500000 
#dtype: float64 

選項2groupby + agg,組數據幀由Year,每年dividewon的計數值由lost

df.Count = df.Count.astype(float) 
(df.set_index('Result').groupby('Year').Count 
    .agg(lambda x: x.get('won', np.nan)/x.get('lost', np.nan))) 

#Year 
#2000 3.200000 
#2001 1.833333 
#2002 1.000000 
#2003 1.083333 
#2004 2.500000 
#Name: Count, dtype: float64