如何在 pandas 中使用 groupby() 和 transform() 函数
您可以使用以下方法在pandas DataFrame中一起使用groupby()和transform()函数:
方法1:使用内置函数的groupby()和transform()
df[' new '] = df. groupby (' group_var ')[' value_var ']. transform (' mean ')
方法2:将groupby()和transform()与自定义函数结合使用
df[' new '] = df. groupby (' group_var ')[' value_var ']. transform ( lambda x: some function)
以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' points ': [30, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team points 0 to 30 1 to 22 2 to 19 3 to 14 4 B 14 5 B 11 6 B 20 7 B 28
示例 1:将 groupby() 和 transform() 与内置函数结合使用
以下代码演示了如何使用groupby( ) 和transform()函数向 DataFrame 添加一个名为mean_points 的新列:
#create new column called mean_points
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')
#view updated DataFrame
print (df)
team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25
A 队球员的平均得分为21.25 ,B 队球员的平均得分为18.25 ,因此这些值被相应地分配给新列中的每个球员。
请注意,我们还可以使用另一个内置函数(例如sum())来创建一个新列,显示每个团队的得分总和:
#create new column called sum_points
df[' sum_points '] = df. groupby (' team ')[' points ']. transform (' sum ')
#view updated DataFrame
print (df)
team points sum_points
0 to 30 85
1 to 22 85
2 A 19 85
3 to 14 85
4 B 14 73
5 B 11 73
6 B 20 73
7 B 28 73
A队球员的得分总和为85 ,B队球员的得分总和为73 ,因此这些值被相应地分配给新列中的每个球员。
示例 2:将 groupby() 和 transform() 与自定义函数结合使用
以下代码演示如何使用groupby( ) 和transform()函数创建一个自定义函数,用于计算各自球队中每个球员的总得分百分比:
#create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())
#view updated DataFrame
print (df)
team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562
以下是如何解释结果:
- A队的第一名球员在A队总共85分中得到了30分,因此他占总分的比例为30/85 = 0.352941 。
- A队第二名选手在A队总共85分中得到了22分,因此他占总分的比例为22/85= 0.258824 。
等等。
请注意,我们可以在Transform()函数中使用lambda参数来执行我们想要的任何自定义计算。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
如何在 Pandas 中执行 GroupBy 求和
如何在 Pandas 中使用 Groupby 和 Plot
如何在 Pandas 中使用 GroupBy 计算唯一值