likes
comments
collection
share

.transform('sum')` 和 `.sum()` 用法与区别

作者站长头像
站长
· 阅读数 34

.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')` 和 `.sum()` 用法与区别

.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')` 和 `.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
评论
请登录