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