如何按RANK列拆分DataFrame子集并存入列表(不使用groupby)
按RANK列拆分DataFrame存入列表的自动化实现(无groupby版本)
核心逻辑
不需要手动编写逐值筛选代码,可自动适配任意数量的RANK取值:
- 提取RANK列的去重值,按需排序保证子集顺序和RANK大小对应
- 遍历所有去重后的RANK值,用布尔索引筛选对应子集,直接存入列表
代码实现
首先构造匹配示例结构的测试DataFrame:
import pandas as pd df = pd.DataFrame({ 'ID': [1, 2, 3, 2, 2, 2], 'GROUP': ['A', 'B', 'C', 'A', 'E', 'G'], 'RANK': [1, 2, 3, 1, 2, 3] })
核心拆分代码:
# 获取RANK列去重后升序排列的取值,保证子集按RANK从小到大排序 rank_values = sorted(df['RANK'].unique()) # 自动遍历所有RANK值筛选子集,存入目标列表 ranks = [df[df['RANK'] == val] for val in rank_values]
使用说明
- 最终得到的
ranks列表完全匹配需求格式:ranks[0]为RANK=1的子集、ranks[1]为RANK=2的子集,以此类推 - 无论RANK列有多少种取值(150种甚至更多),代码无需任何修改即可自动完成拆分
- 如果不需要按RANK值排序,去掉
sorted()函数直接使用df['RANK'].unique()即可 - 全程未使用
groupby,仅靠pandas原生布尔索引实现筛选
内容的提问来源于stack exchange,提问作者its.kcl
相关产品推荐
相关产品推荐

