使用数据帧的三列之间的比较来过滤数据帧

2024-09-24 22:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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的一列之和大于其余两列。 我的预期产出如下:

enter image description here

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

泽普


Tags: 数据dataframedfmatch建议pdvsdraw
1条回答
网友
1楼 · 发布于 2024-09-24 22:22:11

IIUC需要groupby+transform,然后我们做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

相关问题 更多 >