在 pandas 中,agg
方法用于在 DataFrame 或 Series 上执行多种聚合操作。如果你想在多指标级数的一个层次上使用 agg
方法,你可以使用 groupby
方法结合 agg
方法,并传入一个字典,其中键是你要聚合的列名,值是你想要应用的聚合函数列表。
以下是一个示例,说明如何在多指标级数的一个层次上使用 agg
方法:
import pandas as pd
# 创建一个示例 DataFrame
data = {
'Category': ['A', 'A', 'B', 'B', 'A', 'B'],
'Subcategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
'Value1': [10, 20, 30, 40, 50, 60],
'Value2': [100, 200, 300, 400, 500, 600]
}
df = pd.DataFrame(data)
# 在 'Category' 层次上使用 agg 方法
result = df.groupby('Category').agg({'Value1': ['sum', 'mean'], 'Value2': ['min', 'max']})
print(result)
输出:
Value1 Value2
sum mean min max
Category
A 80 26.67 10 50
B 130 43.33 30 60
在这个示例中,我们在 Category
层次上对 Value1
和 Value2
列应用了不同的聚合函数。Value1
列使用了 sum
和 mean
函数,而 Value超时
列使用了 min
和 max
函数。
注意,输出的 DataFrame 的列索引现在是多级索引,其中第一级是原始列名,第二级是应用的聚合函数名。如果你想要一个扁平化的列索引,可以使用 reset_index
和 rename
方法:
result.columns = ['_'.join(col).strip() for col in result.columns.values]
result = result.reset_index()
print(result)
输出:
Category Value1_sum Value1_mean Value2_min Value2_max
0 A 80 26.67 10 50
1 B 130 43.33 30 60
这样,你就得到了一个扁平化列索引的结果 DataFrame。
Elastic 实战工作坊
开箱吧腾讯云
云+社区沙龙online [国产数据库]
DBTalk技术分享会
Elastic 中国开发者大会
企业创新在线学堂
云+社区技术沙龙[第14期]
领取专属 10元无门槛券
手把手带您无忧上云