Python 使用数据帧的三列之间的比较筛选数据帧

Python 使用数据帧的三列之间的比较筛选数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我正在使用一个包含一百万行的数据帧。 我尝试尽可能简单地复制数据帧。 下面是简单的数据框 df = pd.DataFrame() df['Match'] = ['A Vs B','A Vs B','A Vs B','A Vs B','A Vs B','C Vs D','C Vs D','C Vs D','C Vs D','C Vs D','C Vs D'] df ['Hwin'] = [1,1,1,0,0,0,0,1,0,0,0] df ['Awin'] = [0,0,0,1,0,1,0,0,0

我正在使用一个包含一百万行的数据帧。 我尝试尽可能简单地复制数据帧。 下面是简单的数据框

df = pd.DataFrame()
df['Match'] = ['A Vs B','A Vs B','A Vs B','A Vs B','A Vs B','C Vs D','C Vs D','C Vs D','C Vs D','C Vs D','C Vs D']
df ['Hwin'] = [1,1,1,0,0,0,0,1,0,0,0]
df ['Awin'] = [0,0,0,1,0,1,0,0,0,1,1]
df ['Draw'] = [0,0,0,0,1,0,1,0,1,0,0]
我的实际数据帧包含30多列。 我想做的事情如下: 我只想为每个匹配保留一行,其中HWinDrawAwin中的一列之和大于其余两列。 我的预期输出如下:

我该怎么做? 非常感谢你的建议。 谢谢


Zep.

IIUC需要
groupby
+
transform
,然后我们执行row
max
idxmax

s=df.groupby(df.columns.tolist())[['Hwin','Awin','Draw']].transform('sum')
df.loc[s.max(1).groupby(df.Match).idxmax()]
    Match  Hwin  Awin  Draw
0  A Vs B     1     0     0
5  C Vs D     0     1     0

这不是丢弃副本。它会在不看比较的情况下删除所有副本,我应该感谢你。我会把它应用到我的df中。感谢C对D的比赛,Hwin等于Awin和Draw之和,而不是更大