首页 >后端开发 >Python教程 >如何使用'transform()”在 Pandas 中添加带有分组求和的新列?

如何使用'transform()”在 Pandas 中添加带有分组求和的新列?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-24 10:46:14878浏览

How to Add a New Column with Grouped Summation in Pandas Using `transform()`?

根据 Pandas 中的分组求和创建新列

问题陈述

尝试根据值的求和创建新列时使用 pandas 的 groupby() 按日期分组,遇到 NaN 结果。目标是添加一列,显示所有日期的特定值的总和,无论与该日期关联的行数如何。

解决方案

要实现此目的,转换使用()函数。与逐行操作的 apply() 函数不同,transform() 对分组数据执行计算并返回与原始数据帧对齐的序列。

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

这里是逐步细分:

  • df['Data3'].groupby(df['Date']): 此行将 'Data3' 列分组'Date'.
  • transform('sum'):将 'transform' 函数应用于分组对象,计算每个日期组的 'Data3' 的总和。
  • 结果为与原始数据框对齐的系列,允许将其添加为名为“Data4”的新列。

示例用法

考虑以下数据框:

         Date   Sym  Data2  Data3
0  2015-05-08  aapl     11      5
1  2015-05-07  aapl      8      8
2  2015-05-06  aapl     10      6
3  2015-05-05  aapl     15      1
4  2015-05-08  aaww    110     50
5  2015-05-07  aaww     60    100
6  2015-05-06  aaww    100     60
7  2015-05-05  aaww     40    120

应用transform()函数:

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

结果:

         Date   Sym  Data2  Data3  Data4
0  2015-05-08  aapl     11      5     55
1  2015-05-07  aapl      8      8    108
2  2015-05-06  aapl     10      6     66
3  2015-05-05  aapl     15      1    121
4  2015-05-08  aaww    110     50     55
5  2015-05-07  aaww     60    100    108
6  2015-05-06  aaww    100     60     66
7  2015-05-05  aaww     40    120    121

作为从输出中可以明显看出,“Data4”列现在保存每个唯一的“Data3”的总和“日期”值。

以上是如何使用'transform()”在 Pandas 中添加带有分组求和的新列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn