groupby
是 pandas 库中的一个功能,用于将数据集按照一个或多个列的值进行分组。分组后,可以对每个组应用聚合函数(如 sum、mean、max 等),以计算每组的统计值。
groupby
操作主要分为以下几种类型:
假设我们有一个包含销售数据的 DataFrame:
import pandas as pd
data = {
'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
'Sales': [100, 200, 150, 250, 120, 220]
}
df = pd.DataFrame(data)
我们希望选择每个产品类别中销售额最高的行:
# 按产品类别分组,并计算每组的最大销售额
max_sales_per_product = df.groupby('Product')['Sales'].transform('max')
# 将最大销售额添加到原 DataFrame 中
df['MaxSales'] = max_sales_per_product
# 选择每个产品类别中销售额最高的行
result = df[df['Sales'] == df['MaxSales']]
print(result)
groupby
后的数据索引会发生变化?原因:groupby
操作会重新设置索引,以便更好地表示分组后的数据。
解决方法:可以使用 reset_index()
方法将索引重置为默认的整数索引。
df = df.reset_index(drop=True)
解决方法:可以使用 transform
方法将聚合结果添加回原 DataFrame,然后筛选出最大值对应的行。
max_sales_per_product = df.groupby('Product')['Sales'].transform('max')
df['MaxSales'] = max_sales_per_product
result = df[df['Sales'] == df['MaxSales']]
通过上述方法,可以方便地从 groupby
结果中选择值最高的行,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云