根据标签的多数计数过滤数据框中的重叠行

Filtering overlapped rows in data frame based on majority count of labels

如何过滤标签重叠的重复行?我需要 Dataframe 的一个子集,其中重复的行被替换为标签计数最大的一行。

考虑一个数据框 df

df = pd.DataFrame({
 'X' : [1, -1, 1, 1, 3, -2, -1, -1],
 'Y' : [2, 3, 2, 2, 2, -1, 3, 3],
 'label' : [0, 1, 1, 0, 2, 1, 2, 2]
})

过滤后,需要以下子集df_output

df_output = pd.DataFrame({
 'X' : [1, -1, 3, -2], 
 'Y' : [2, 3, 2, -1],
 'label' : [0, 2, 2, 1]
})

我认为您正在寻找 groupby 模式,即

df.groupby(['X','Y'])['label'].apply(lambda x : x.mode().values[0]).reset_index()

输出:

  X  Y  label
0 -2 -1      1
1 -1  3      2
2  1  2      0
3  3  2      2