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

Patricia Arquette
发布: 2024-10-26 09:50:03
原创
287 人浏览过

How to Obtain a Union of Strings with Pandas GroupBy?

Pandas GroupBy:获取字符串并集

在 Pandas 中,groupby 函数提供了一种基于以下条件对数据进行分组的便捷方法:特定列并对结果组执行计算。但是,在处理字符串列时,像 sum() 这样的默认聚合函数可能并不总是能产生所需的结果。

假设我们有一个包含“A”、“B”和“C”列的 DataFrame,其中“C”包含字符串值。我们可以使用 groupby("A")["C"].sum() 来获取每个组的串联字符串:

<code class="python">print(df.groupby("A")["C"].sum())

# Output:
# A
# 1    Thisstring
# 2           is!
# 3             a
# 4        random
# Name: C, dtype: object</code>
登录后复制

获取字符串的并集(即每个组中的唯一字符串)组),我们可以利用一个自定义函数来迭代“C”列的元素并创建一个用大括号括起来的逗号分隔字符串。

<code class="python">def get_string_union(group):
    return "{%s}" % ', '.join(group['C'].unique())

df.groupby('A')['C'].apply(get_string_union)

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>
登录后复制

另一种方法涉及使用 apply 函数和lambda 表达式:

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

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>
登录后复制

当应用于更大的 DataFrame 时,可以利用自定义函数返回包含每个组所需的字符串并集的 Series:

<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)

# Output:
#   A         B               C
# A                             
# 1  2  1.615586  {This, string}
# 2  4  0.421821         {is, !}
# 3  3  0.463468             {a}
# 4  4  0.643961        {random}</code>
登录后复制

通过利用自定义函数或带有 lambda 表达式的 apply 函数,Pandas 允许我们从包含字符串列的数据中操作并获取特定结果。上述方法提供了方便的方法来组合每个组中的唯一字符串并以所需的格式返回它们。

以上是如何使用 Pandas GroupBy 获取字符串并集?的详细内容。更多信息请关注PHP中文网其他相关文章!

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