基于匹配列的熊猫组合行

时间:2020-03-04 15:21:54

标签: python pandas numpy dataframe

我有一个csv文件,其中包含每个球队在整个赛季的比赛和统计数据。我想将客队与那周面对的主队排在同一排。

当前数据框:

      Week   Team   H/a   Opp   Pf   Pa   Pyards  
      1      A            C     3    14   100     
      1      B            D     7    21   200     
      1      C      @     A     14   3    300     
      1      D      @     B     21   7    400     

所需数据框:

  Week   HomeTeam   H-score   H-Pyards   AwayTeam   A-score   A-Pyards  
  1      A          3         100        C          14        300       
  1      B          7         200        D          21        400       

但是我会为每支球队和每多周提供更多统计数据。

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找的操作是testImplementation ('org.robolectric:robolectric:3.x.x') { exclude group: 'com.google.protobuf' } ,之后进行了一些操作。正如Quang Hoang所说,将相同的数据框/表合并到不同的列中称为自连接。我相信这是一种能够获得预期输出的方法:

self-join

输出:

df = pd.DataFrame({'Week':[1,1,1,1],
                   'Team':['A','B','C','D'],
                   'H/a':[np.nan,np.nan,'@','@'],
                   'Opp':['C','D','A','B'],
                   'Pf':[3,7,14,21],
                   'Pa':[14,21,3,7],
                   'Pyards':[100,200,300,400]})
print(df)
new_df = df.merge(df,how='inner',left_on=['Week','Team'],right_on=['Week','Opp'])
new_df = new_df[new_df['H/a_x'] != '@']
replacers = {'Team_x':'HomeTeam','Pf_x':'Pf','Pyards_x':'H-Pyards','Opp_x':'AwayTeam','Pa_x':'A-score','Pyards_y':'A-Pyards'}
new_df = new_df[['Week']+[x for x in replacers.keys()]]
new_df = new_df.rename(columns=replacers)
print(new_df)