首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他群体中保持最大的多样性?

如何在其他群体中保持最大的多样性?
EN

Stack Overflow用户
提问于 2022-10-16 05:22:54
回答 1查看 20关注 0票数 -2

我有一个dataframe,它看起来如下(示例):

代码语言:javascript
复制
id    val
a      4
a      6
b      2
b      4
b      8
c      3
c      4
c      6 
c      8

我想做groupby id,并为每个组保留这些值,以确保最终结果列val尽可能多样化。例如,您可以看到每个组都有val 4。最糟糕的输出是:

代码语言:javascript
复制
id   val
a     4
b     4
c     4

最好的办法是:

代码语言:javascript
复制
id   val
a     4
b     2
c     6

或所有val中的值都尽可能多样化的任何其他地方。但是,在某些情况下,val中的所有值都不可能是唯一的。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2022-10-16 07:01:28

IIUC,您希望每个id获得一行,优先选择“罕见”的值。

您可以重塑以获得计数/虚拟值,然后排序以获得稀有值:

代码语言:javascript
复制
df2 = pd.crosstab(df['id'], df['val'])

out = (df2
    .sort_index(axis=1, key=df2.sum().get)
    .replace({0: pd.NA})
    .stack().reset_index()
    .drop(columns=0)
    .groupby('id', as_index=False).first()
 )

输出:

代码语言:javascript
复制
  id  val
0  a    6
1  b    2
2  c    3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74084784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档