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