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
,然后我们执行rowmax
和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之和,而不是更大