📅  最后修改于: 2023-12-03 15:38:22.320000             🧑  作者: Mango
在 Pandas 中,我们可以使用 groupby 方法对 DataFrame 进行分组操作,然后在每个组中应用一个函数,常常用于数据的聚合、转换等操作。
首先,我们可以使用 groupby 方法对 DataFrame 进行分组。该方法接收一个或多个用于分组的列名,并返回一个 DataFrameGroupBy 对象,我们可以在这个对象上进行各种操作。
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [9, 8, 7, 6, 5, 4, 3, 2]
})
# 按 A 列分组
grouped = df.groupby('A')
接下来,我们可以在每个组中应用一个函数。常用的函数有 sum、mean、agg 等,也可以自定义一个函数进行应用。
# 对每个组应用 sum 函数
result = grouped.sum()
# 对每个组应用自定义的函数并返回结果
def my_func(x):
return x.max() - x.min()
result = grouped.agg(my_func)
在上面的例子中,我们首先按 A 列对 DataFrame 进行了分组,然后分别应用了 sum 和自定义的函数 my_func。
最后,返回的结果是一个 DataFrame,其中包含了每个组的结果。在应用一些函数时,也可以指定要对哪些列进行计算。
# 指定要对 C 列进行计算
result = grouped['C'].sum()
除了标量值之外,还可以返回如 Series、DataFrame 等对象。
# 返回 Series
result = grouped['C'].apply(lambda x: x.max() - x.min())
# 返回 DataFrame
result = grouped[['C', 'D']].apply(lambda x: x.mean())
这些都是非常常见的操作,可以在实际的数据处理中灵活运用。