パンダのグループ操作をよりよく理解しようとしています。
例として、テニスの試合で行われたセットのリストを含むデータフレームがあるとします。
tennis_sets = pd.DataFrame.from_items([
('date', ['27/05/13', '27/05/13', '28/05/13', '28/05/13',
'28/05/13', '29/05/13', '29/05/13']),
('player_A', [6, 6, 2, 6, 7, 6, 6]),
('player_B', [4, 3, 6, 7, 6, 1, 0])
])
その結果
date player_A player_B
0 27/05/13 6 4
1 27/05/13 6 3
2 28/05/13 2 6
3 28/05/13 6 7
4 28/05/13 7 6
5 29/05/13 6 1
6 29/05/13 6 0
特定の日に行われた各試合の総合スコアを決定したいと思います。これは次のようになります
date player_A player_B
0 27/05/13 2 0
1 28/05/13 1 2
2 29/05/13 2 0
したがって、新しいnumpy配列を作成し、次のように繰り返すことでこれを行うことができます:
matches = tennis_sets.groupby('date')
scores = np.zeros((len(matches),2))
for i, (_, match) in enumerate(matches):
a, b = match.player_A, match.player_B
scores[i] = np.c_[sum(a>b), sum(b>a)]
その後、この新しいスコア配列を日付に再アタッチできます。ただし、これが好ましい方法であるとは考えにくいです。
上記のように各日付と一致スコアで新しいデータフレームを作成するには、パンダの api を使用してこれを達成できるより良い方法はありますか?