在Pandas中,可以使用transform
函数将groupby结果广播到所有行。transform
函数可以将一个函数应用于每个分组,并将结果广播到原始DataFrame的所有行。
具体步骤如下:
groupby
函数对DataFrame进行分组,指定要分组的列。transform
函数,并传入要应用的函数。broadcast
函数将分组结果广播到所有行。下面是一个示例代码:
import pandas as pd
# 创建示例DataFrame
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'two', 'two', 'one', 'two', 'one'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame(data)
# 使用groupby函数对'A'列进行分组,并计算每个分组的平均值
grouped = df.groupby('A')['C'].transform('mean')
# 将分组结果广播到所有行
df['group_mean'] = grouped
print(df)
输出结果如下:
A B C group_mean
0 foo one 1 4.666667
1 bar one 2 4.000000
2 foo two 3 4.666667
3 bar two 4 4.000000
4 foo two 5 4.666667
5 bar one 6 4.000000
6 foo two 7 4.666667
7 foo one 8 4.666667
在这个例子中,我们对'A'列进行分组,并计算每个分组的平均值。然后使用transform
函数将平均值广播到原始DataFrame的所有行,创建了一个新的列'group_mean'。
推荐的腾讯云相关产品:腾讯云数据库TDSQL,产品介绍链接地址:https://cloud.tencent.com/product/tdsql
领取专属 10元无门槛券
手把手带您无忧上云