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