保持原序下的相邻记录分组

任务:列出NBA连续夺冠次数最多的球队夺冠信息

Python

1 import pandas as pd
2 import numpy as np
3 pd.set_option('display.max_columns', None)
4 nba_file = 'E:\\txt\\nba.txt'
5 nba_champion = pd.read_csv(nba_file,sep='\t')
6 nba_champion = nba_champion.sort_values(by = 'Year')
7 arr = np.zeros(len(nba_champion))
8 arr[nba_champion['Champion']!=nba_champion['Champion'].shift(1)]=1
9 arr = np.cumsum(arr)
10 nba_champion['flag']=arr
11 nba_champion_g = nba_champion.groupby(by='flag')
12 max_num = nba_champion_g.size().idxmax()
13 max_champion = nba_champion_g.get_group(max_num)
14 print(max_champion)

Python没有相邻条件分组的功能,需要创造一列分组标志。

集算器

  A  
1 =connect("mysql") 连接数据库
2 =A1.query("select * from nba order by year") 按照年份排序
3 =A2.group@o(Champion) 相邻不同,另起分组
4 =A3.maxp(~.len()) 列出夺冠次数最多的球队夺冠信息

集算器的集合是有序的,可以很方便的把相邻相同记录的归并在一组,不同的另起一组。