如何组合 Pandas Groupby 中的字符串以获得唯一值?

Susan Sarandon
发布: 2024-10-25 00:27:02
原创
293 人浏览过

How Can I Combine Strings Within Pandas Groupby for Unique Values?

如何使用 Pandas Groupby 获取字符串并集

使用 Pandas 的 groupby 方法对数据进行分组时,可以使用以下方式轻松聚合数字列类似 sum 的函数。然而,聚合字符串列带来了挑战,因为并不总是需要简单的串联。本文探讨了获取组内字符串并集的方法。

问题:

考虑以下 DataFrame:

A B C
1 0.749065 This
2 0.301084 is
3 0.463468 a
4 0.643961 random
1 0.866521 string
2 0.120737 !

应用 df. groupby("A")["B"].sum() 返回每组 B 列中数值的总和。但是,在字符串列 C 上调用 df.groupby("A")["C"].sum() 无法按预期工作,导致字符串串联。

解决方案:

自定义函数:

一种方法是定义一个自定义函数来聚合组内的字符串值。然后可以使用 apply() 方法将此函数应用于 DataFrame。例如:

<code class="python">def f(x):
    return Series(dict(A = x['A'].sum(), 
                        B = x['B'].sum(), 
                        C = "{%s}" % ', '.join(x['C'])))

df.groupby('A').apply(f)</code>
登录后复制

这将返回一个 DataFrame,其中每个组的 C 列中的字符串并集,其中字符串包含在大括号内。

带有 . sum():

另一种方法是将 lambda 函数应用于 groupby 对象,对数字列使用 .sum() ,对字符串列使用自定义串联:

<code class="python">df.groupby('A').apply(lambda x: x.sum())</code>
登录后复制

这将返回一个包含数值和连接字符串之和的 DataFrame。要获得字符串的并集,您可以在 lambda 函数中使用字符串操作。

性能注意事项:

需要注意的是,将自定义函数应用于 groupby对象比在数字列上使用聚合函数慢。对于大型数据集,应该考虑这种性能权衡。

以上是如何组合 Pandas Groupby 中的字符串以获得唯一值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!