已信任 Jupyter 服务器: 本地 Python 3: Not Started [1] import pandas as pd import numpy as np [7] df = pd.DataFrame({ ‘user‘:[‘小明‘,‘小黑‘,‘小黄‘,‘小李‘], ‘gender‘:[‘男‘,‘女‘,‘女‘,‘男‘], ‘score‘:[99,95,70,88] }) df user gender score 0 小明 男 99 1 小黑 女 95 2 小黄 女 70 3 小李 男 88 [8] df.groupby(‘gender‘) <pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000029813AB8A90> [9] # .groups获取分组情况 df.groupby(‘gender‘).groups {‘女‘: [1, 2], ‘男‘: [0, 3]} [11] # 迭代 grouped = df.groupby(‘gender‘) for name,group in grouped: print(name) print(group) 女 user gender score 1 小黑 女 95 2 小黄 女 70 男 user gender score 0 小明 男 99 3 小李 男 88 [12] # 选择组 grouped.get_group(‘男‘) user gender score 0 小明 男 99 3 小李 男 88 [22] # 选择组,聚合计算 grouped.get_group(‘男‘)[‘score‘].agg(np.mean) 93.5 [15] # 选择组,聚合计算 grouped.get_group(‘女‘)[‘score‘].agg(np.max) 95 [16] # 选择组,计算长度 grouped.get_group(‘女‘).agg(np.size) user 2 gender 2 score 2 dtype: int64 [17] df[‘star‘] = pd.Series([5,7,4,3]) df user gender score star 0 小明 男 99 5 1 小黑 女 95 7 2 小黄 女 70 4 3 小李 男 88 3 [18] grouped = df.groupby(‘gender‘) [19] grouped[[‘score‘,‘star‘]].agg({‘score‘:np.mean,‘star‘:np.sum}) score star gender 女 82.5 11 男 93.5 8 [23] df.groupby(‘gender‘).filter(lambda x:x[‘score‘].mean()>90) user gender score star 0 小明 男 99 5 3 小李 男 88 3 [-]