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