2017-04-05 50 views
1

我想獲得一個團隊在一個賽季中獲勝的次數。獲取條件上的唯一值的計數

我有一個數據幀尋找這樣的:

Date   Team Win Player SHOT 
2014-20-10  CHI  1 Benoit  1 
2014-20-10  CHI  1 Benoit  0 
2014-20-10  CHI  1 Benoit  0 
2014-20-10  CHI  1 Mickael 1 
2014-23-10  CHI  0 Phillips 1 

所以問題是下面的,如果我總結了贏了,我得到太多的勝利,因爲該值是重複的每一個球員的每一次擊球。

我已經做了一個獨特的價值列合併日期,贏和團隊,我能夠得到這些獨特的價值計數。

df.new["Unique"] = df.new["Date"].map(str) + df.new["Team"] + df.new["Win"] 
counts = df.new['Unique'].value_counts() 
df.new.groupby(['Unique'])['Win'].sum() 

我已嘗試兩種技術來獲得勝利的總和,但每次我只是得到數據中唯一值的次數。我想要的是本賽季每支球隊的勝利總數。所以每當一個獨特的價值與勝利欄中的1相關聯時,我想要+1,當它是0 + 0時......所以我在本賽季獲得了每支球隊的總勝利。

我希望我很清楚。我會在R中使用聚合來完成這項工作,但我是python的新手。你會怎麼做?

感謝

回答

1

如果你有完美的數據:

df.groupby(['Date','Team'])['Win'].max() 

由於只應該對日期的團隊一個結果。 併爲所有日期:

df.groupby(['Date','Team'])['Win'].max().groupby(level=1).sum() 
+0

完美,謝謝 –

2

我相信pivot_table也將在這裏工作。

wins = pd.pivot_table(df, 'Win', 'Date', 'Team').sum()