我想结合 groupby 和 min 但保留整个数据框。如果我使用下面的方法,我最终只会得到 2 列,即 col1 和 col2:
对于这个 df:
col1 col2 col3
1 1 'A'
1 0 'B'
2 2 'C'
2 3 'D'
df.groupby(df['col1'])[['col2']].min():
col1 col2
1 0
2 2
但是,一旦确定了 col2 的最小行,我就需要 col3 中该行的相应元素,因此:
col1 col2 col3
1 0 'B'
2 2 'C'
最简单的方法是分两步。首先准备包含这些最小值的支持数据框。第二 - 初始数据帧与支持数据帧的内部合并。您可以将其视为“内部联接”,但无需分隔列(典型的联接需要您添加后缀以区分数据源 - 左数据源和右数据源)。
首先我们创建初始数据框:df1 = pd.DataFrame(data={'col1':[1,1,2,2],'col2':[1,0,2,3],'col3':['A','B','C','D']})
然后我们必须执行我们的groupby。我们必须在事后重置索引。否则栏col1
将被视为索引:df2 = df.groupby(df['col1'])[['col2']].min().reset_index()
我们的最后一步是在内部合并两者:pd.merge(df1, df2, how='inner')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)