2016-11-11 6 views
2

データフレームとしてチームのデータがあるとします。df`ピボット`を使って勝敗を追跡するにはどうすればいいですか?

home_team home_score away_team away_score 
A    3   C   1 
B    1   A    0 
C    3   B    2 

1つのチームが他のチームを何回倒したかを示すデータフレームが必要です。だから、例えば[1,3]のエントリは、回チーム1の数がチーム3を破ったことだろうが、これができなければなりませんdf.pivot何かのように聞こえる

1.ビートチームとして [3,1]で数回チーム3の数になりますやりたいことをすることはできません。

パンダを使ってどうすればいいですか?ここで

はこれがちょうど勝者とloosersを持つ新しいデータフレームを作成する所望の出力

A B C 

A 0 0 1 

B 1 0 0 

C 0 1 0 
+0

値あなたは所望の出力は次のようにどのように見えるべきかのサンプルを投稿する必要がありました。 –

+0

@JoeR私の編集を参照してください。従って、[A、B]はAがBを打つ回数であり、[B、A]はBがAを打つ回数である。 –

答えて

4

です。それはあなたが探しているものを作成するためにピボットすることができます。

私は、ピボットテーブルの一部を埋めるためにいくつかの追加データが

import pandas as pd 

data = {'home_team':['A','B','C','A','B','C','A','B','C'], 
     'home_score':[3,1,3,0,1,2,0,4,0], 
     'away_team':['C','A','B','B','C','B','C','A','A'], 
     'away_score':[1,0,2,2,0,3,1,7,1]} 
df = pd.DataFrame(d) 

# create new dataframe 
WL = pd.DataFrame() 
WL['winner'] = pd.concat([df.home_team[df.home_score>df.away_score], 
          df.away_team[df.home_score<df.away_score]], axis=0) 
WL['loser'] = pd.concat([df.home_team[df.home_score<df.away_score], 
         df.away_team[df.home_score>df.away_score]], axis=0) 
WL['game'] = 1 

# groupby to count the number of win/lose pairs 
WL_gb = WL.groupby(['winner','loser']).count().reset_index() 

# pivot the data 
WL_piv = WL_gb.pivot(index='winner', columns='loser', values='game') 

enter image description here

+0

複数回の会議で良好な呼び出し – piRSquared

関連する問題