【对比Python】保持原序下的相邻记录分组
任务:列出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()) | 列出夺冠次数最多的球队夺冠信息 |
集算器的集合是有序的,可以很方便的把相邻相同记录的归并在一组,不同的另起一组。