.transform('sum')` 和 `.sum()` 用法与区别
.transform('sum')
和 .sum()
是 pandas 中用于数据聚合或转换的两种不同方法,它们的主要区别和用法如下所示:
.sum()
方法
.sum()
是 pandas 中的聚合函数之一,用于计算数据中的总和。它的主要特点包括:
- 作用范围:作用于整个 DataFrame 或者特定的轴(如行或列)。
- 返回结果:返回一个标量值(总和)或者一个包含总和的 Series 或 DataFrame,具体取决于应用
.sum()
的对象。 - 用法示例:可以直接在 DataFrame 或 Series 上应用,例如
df.sum()
或df['列名'].sum()
。
import pandas as pd
data = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
total_sum = data.sum() # 对整个 DataFrame 进行列求和
column_sum = data['A'].sum() # 对指定列 'A' 进行求和
输出结果:
.transform('sum')
方法
.transform('sum')
是 pandas 中的转换函数之一,用于对数据进行转换操作。它的主要特点包括:
- 作用范围:作用于 DataFrame 或者 Series 中的每个元素。
- 返回结果:返回与原始输入数据相同形状的结果,但是每个元素都根据指定的转换函数进行转换。
- 用法示例:通常与
groupby
结合使用,用于计算组内的聚合结果,并将聚合结果广播到原始数据的每个元素上。
import pandas as pd
data = pd.DataFrame({
'Group': ['A', 'A', 'B', 'B'],
'Value': [1, 2, 3, 4]
})
# 计算每个组的总和,并广播到每个元素上
data['Group_Sum'] = data.groupby('Group')['Value'].transform('sum')
输出结果:
在上述示例中,
.transform('sum')
将会计算每个组的总和(例如组 'A' 的总和为 3,组 'B' 的总和为 7),并将这些总和值广播(或者说“转换”)到原始数据的每个元素上,生成一个新的列 'Group_Sum'。
区别总结
- 范围不同:
.sum()
是对整体数据或者某个轴进行聚合操作,而.transform('sum')
则是对每个元素进行转换操作。 - 返回结果不同:
.sum()
返回聚合结果(标量、Series 或 DataFrame),而.transform('sum')
返回与原始数据形状相同的转换结果。 - 用途不同:
.sum()
适用于整体数据的汇总计算,而.transform('sum')
适用于需要对每个元素进行组内聚合操作的场景,如计算组内总和并将结果广播到每个元素上。
综上所述,.transform('sum')
和 .sum()
在 pandas 中的使用场景和效果有明显的区别,根据具体需求选择合适的方法进行数据操作和转换。
转载自:https://juejin.cn/post/7381364692398702629