如何使用'groupby”连接 Pandas DataFrame 中组内的字符串?

Barbara Streisand
发布: 2024-10-24 18:35:04
原创
513 人浏览过

How to Concatenate Strings within Groups in a Pandas DataFrame Using `groupby`?

Pandas groupby:获取字符串连接

使用其中一列包含字符串的 DataFrame 时,默认 sum() 函数可能并不总能提供期望的结果。在这种情况下,目标是连接每个组的字符串,这里有一个全面的解释和解决方案。

考虑以下 DataFrame:

   A         B       C
0  1  0.749065    This
1  2  0.301084      is
2  3  0.463468       a
3  4  0.643961  random
4  1  0.866521  string
5  2  0.120737       !
登录后复制

默认情况下,应用 sum()到列“C”会产生以下输出:

A
1    Thisstring
2           is!
3             a
4        random
dtype: object
登录后复制

要获得为每个组连接字符串的所需输出,有多种方法:

使用 apply () 函数:

一种方法是将自定义函数应用于 groupby 对象。此函数可以连接每个组内的字符串。

<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>
登录后复制

或者:

您可以通过显式使用 apply() 和 lambda 函数来获得相同的结果:

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join(x))</code>
登录后复制

应用自定义逻辑:

如果需要自定义,例如删除空字符串或应用特定分隔符,您可以在 lambda 函数中实现自己的逻辑。

例如,要删除空字符串:

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join([c for c in x if c]))</code>
登录后复制

性能注意事项:

请注意,应用自定义函数可能比使用内置 sum() 函数。因此,建议根据您的具体需求考虑性能影响。

以上是如何使用'groupby”连接 Pandas DataFrame 中组内的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

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