首页  >  文章  >  后端开发  >  如何使用“groupby”连接 Pandas DataFrame 中组内的字符串?

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

Barbara Streisand
Barbara Streisand原创
2024-10-24 18:35:04503浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn