在Pandas中,groupby
操作是一种强大的工具,它允许你根据一个或多个键对数据进行分组。如果你想在每个分组上应用条件并创建一个新的DataFrame,你可以使用groupby
结合apply
方法来实现。
假设我们有一个DataFrame,包含销售数据,我们想要根据产品类别分组,并且只保留销售额超过一定阈值的记录。
import pandas as pd
# 创建一个示例DataFrame
data = {
'product_category': ['A', 'A', 'B', 'B', 'C', 'C'],
'sales': [100, 200, 150, 300, 50, 75]
}
df = pd.DataFrame(data)
# 定义一个函数,用于过滤销售额超过阈值的记录
def filter_sales(group, threshold):
return group[group['sales'] > threshold]
# 应用groupby和apply
threshold = 100
filtered_df = df.groupby('product_category').apply(filter_sales, threshold).reset_index(drop=True)
print(filtered_df)
filter_sales
函数接受一个分组和一个阈值,返回销售额超过该阈值的分组记录。groupby
按产品类别分组,然后对每个分组应用filter_sales
函数。reset_index(drop=True)
来重置索引,使得结果DataFrame的索引从0开始连续。问题: 如果分组后的数据量很大,apply
操作可能会很慢。
解决方法:
sum
, mean
等。transform
方法进行向量化操作,这通常比apply
更快。通过这种方式,你可以灵活地对分组数据进行条件过滤和转换,以满足不同的数据分析需求。
领取专属 10元无门槛券
手把手带您无忧上云