首页 > 解决方案 > 使用该数据帧的三列之间的比较过滤数据帧

问题描述

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

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 多个列。我想做的事情如下:我只想为每场比赛保留一行,其中HWin Draw Awin中的一列之和大于其余两列。我的预期输出如下:

在此处输入图像描述

我怎样才能做到这一点?非常感谢您的建议。谢谢,

泽普。

标签: pythonpandasdataframe

解决方案


IIUC 需要groupby+ transform,然后我们做 rowmaxidxmax

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

推荐阅读