在Python中,groupby()
是 pandas 库中的一个功能强大的函数,它允许你根据一个或多个列的值将数据分组。这对于聚合操作特别有用,比如求和、平均、计数等。
groupby()
函数通过指定的列名来创建分组。每个组包含了具有相同列值的行。之后,你可以对这些组应用各种聚合函数。
假设我们有一个 DataFrame,包含两列:'A' 和 'B',我们想要根据这两列进行分组,并计算每组的平均值。
import pandas as pd
# 创建一个示例 DataFrame
data = {
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [10, 20, 30, 40, 50, 60, 70, 80],
'D': [1, 2, 3, 4, 5, 6, 7, 8]
}
df = pd.DataFrame(data)
# 使用 groupby() 根据列 'A' 和 'B' 进行分组
grouped = df.groupby(['A', 'B'])
# 计算每组的平均值
result = grouped.mean()
print(result)
C D
A B
bar one 20.000000 2.000000
three 40.000000 4.000000
two 50.000000 6.000000
foo one 40.000000 4.000000
three 80.000000 8.000000
two 40.000000 4.000000
解决方法:你可以对分组后的对象应用各种聚合函数,如 sum()
, mean()
, count()
等,也可以使用 apply()
函数来应用自定义函数。
# 应用自定义函数
def custom_agg(group):
return group.max() - group.min()
result_custom = grouped.apply(custom_agg)
print(result_custom)
解决方法:如果你想要将分组后的结果作为新的 DataFrame,并且不希望保留原来的分组索引,可以使用 reset_index()
方法。
result_reset = result.reset_index()
print(result_reset)
这些链接提供了更多关于 groupby()
函数和其他相关方法的详细信息。
领取专属 10元无门槛券
手把手带您无忧上云