按列分组以查找另一列中最频繁的值?

按列分组以在另一列中查找最频繁的值。例子:


import pandas as pd

d = {'col1': ['green','green','green','blue','blue','blue'],'col2': ['gx','gx','ow','nb','nb','mj']}

df = pd.DataFrame(data=d)

df

给出:


col1   col2

green  gx

green  gx

green  ow

blue   nb

blue   nb

blue   xv

结果:


因为green拥有gx和blue拥有nb


波斯汪
浏览 149回答 2
2回答

慕斯709654

您可以使用GroupBy+transform与pd.Series.mode再drop_duplicates。使用此解决方案,可以维护原始数据帧中的索引。它假设只有一种模式,因此每组过滤一种模式。modes = df.groupby('col1')['col2'].transform(lambda x: x.mode().iat[0])res = df[df['col2'] == modes].drop_duplicates()print(res)    col1 col20  green   gx3   blue   nb
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python