将 Groupby Dataframe 与 df.groupby().transform() 结合
在处理 pandas dataframe 时,通常需要对以下对象执行操作数据子集,例如对值进行分组和计算统计数据。但是,将这些操作的结果合并回原始数据帧可能会很麻烦。
要解决此挑战,请考虑以下场景:
问题:您有一个包含两列的数据框,“c”和“type”。您的目标是计算每个“c”的“type”值,并向数据框中添加大小为“c”的列。
方法 1(使用地图):
一种方法是使用 map() 函数,它将函数应用于 Series 中的每个值。在这种情况下,您可以将“c”的大小映射到数据框中相应的“c”值:
<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t') a = df.groupby('c').size().reset_index(name='size') a.index = a['c'] g['size'] = g['c'].map(a['size'])</code>
此方法有效,但涉及多个步骤和手动索引对齐。
方法2(使用Transform):
更直接的解决方案是使用pandas的transform()函数,它将函数应用于数据帧的每一行,返回一个与原始索引。您可以使用转换将“c”的大小直接添加到数据框:
<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t') g['size'] = df.groupby('c')['type'].transform('size')</code>
这种方法消除了单独的大小计算和索引对齐的需要,从而产生更简洁和高效的解决方案。
以上是如何使用 df.groupby().transform() 有效组合分组数据框?的详细内容。更多信息请关注PHP中文网其他相关文章!