基于现有DataFrame指定列唯一值拆分生成多个新DataFrame的方法咨询
按列唯一值拆分DataFrame实现方案
使用pandas自带的groupby方法即可实现批量拆分,完全适配b列任意数量的唯一值场景,无需手动枚举值或写多条筛选语句。
核心实现代码
import pandas as pd # 此处替换为你自己的原始DataFrame即可 origin_df = pd.DataFrame({ 'x': [1, 12, 1, 12, 1, 12], 'y': [2, 32, 2, 32, 25, 32], 'z': [3, 8, 3, 8, 3, 81], 'b': ['Max', 'Max', 'Jon', 'Max', 'Jon', 'Anna'] }) # 拆分后存入字典,key为b列的唯一值,value为对应的子DataFrame split_df_dict = {name: df for name, df in origin_df.groupby('b')}
调用方式
- 直接通过b列的值取对应的子表:比如要取b列为Max的子表,执行
split_df_dict['Max']即可,输出与你示例的df_1完全一致 - 如果你需要生成df_1、df_2、df_3这类按顺序命名的独立全局变量,可以追加以下代码:
for idx, (name, df) in enumerate(origin_df.groupby('b'), start=1): globals()[f'df_{idx}'] = df
执行后直接调用df_1、df_2即可得到对应子表。
注:分组默认会按b列的值的字典序排序,如果需要按原始数据中首次出现的顺序分组,可以给groupby加参数sort=False,即origin_df.groupby('b', sort=False)
内容的提问来源于stack exchange,提问作者Tmiskiewicz
相关产品推荐
相关产品推荐

