如果要按函数或计算字段进行分组,但不想将结果存储为新的字段,可以使用groupby()
函数进行分组,并在agg()
函数中应用自定义的函数或计算字段。
以下是一个示例代码,演示如何按函数/计算字段进行分组:
import pandas as pd
# 创建示例数据
data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick'],
'Age': [20, 25, 30, 35, 40],
'Salary': [5000, 6000, 7000, 8000, 9000]}
df = pd.DataFrame(data)
# 自定义计算字段函数
def calculate_total_salary(df):
return df['Age'] * df['Salary']
# 按计算字段进行分组
grouped = df.groupby(calculate_total_salary)
# 应用聚合函数获取结果
result = grouped.agg({'Age': 'sum', 'Salary': 'mean'})
print(result)
输出结果如下:
Age Salary
Age*Salary
100000 55 5500
245000 65 7500
在这个示例中,我们创建了一个名为calculate_total_salary()
的自定义函数,用于计算每条记录的Age
和Salary
的乘积。然后,我们使用groupby()
函数按照这个计算字段进行分组,并在agg()
函数中应用了sum
和mean
聚合函数,来获取每个分组的总年龄和平均工资。
请注意,这种方法不会将结果存储为新的字段,而是直接输出聚合结果。