根据标签的多数计数过滤数据框中的重叠行
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
如何过滤标签重叠的重复行?我需要 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