Pandas中如何按指定列的不同取值分别创建独立DataFrame
Pandas按销售员拆分独立DataFrame实现方案
你首先需要确认排序结果已赋值给实体变量,否则单次执行df.sort_values(by=['salesmen'])不会修改原df,排序结果不会留存:
# 保存排序后的数据集 df_sorted = df.sort_values(by=['salesmen'])
推荐方案:字典映射存储(易维护、无报错风险)
直接按salesmen列分组遍历,把每个销售员对应的数据集存在字典里,调用时按姓名取对应值即可,sort=False参数可以保留你之前排好的顺序,不会触发分组默认的重排逻辑:
salesman_df_map = {} for salesman_name, sub_df in df_sorted.groupby('salesmen', sort=False): # 重置索引,去掉原df的索引标记,不需要可以删掉reset_index部分 salesman_df_map[salesman_name] = sub_df.reset_index(drop=True)
使用示例:如果要获取销售员"李雷"的对应数据,直接访问salesman_df_map['李雷']就能拿到独立的DataFrame。
可选方案:动态生成独立变量(不推荐)
如果确实需要生成和销售员姓名绑定的单独变量,可以借助globals()动态赋值,注意如果姓名包含特殊字符、空格会触发语法错误:
for salesman_name, sub_df in df_sorted.groupby('salesmen', sort=False): globals()[f'df_{salesman_name}'] = sub_df.reset_index(drop=True)
执行后会直接生成df_李雷、df_韩梅梅这类对应每个销售员的DataFrame变量。
提示:如果销售员数量较多,优先选字典存储的方案,不会污染全局命名空间,后续批量处理、遍历调用也更方便。
内容的提问来源于stack exchange,提问作者max2lax
相关产品推荐
相关产品推荐

