如何按列重复值从Pandas DataFrame中拆分出多个子DataFrame
实现方案
首先针对你关心的duplicated适配性问题:该方法仅用于标记、筛选重复行,无法自动按A列所有不同取值拆分出对应子表,需要手动穷举A列取值逐一筛选,效率低且易出错,完全不适配你的需求。
更适合的实现方式是使用pandas.DataFrame.groupby方法,无需提前知晓A列的取值范围和去重后的数量,操作非常简便。
具体操作步骤
1. 按A列生成分组对象
import pandas as pd # df替换为你自己的原始DataFrame变量名 grouped = df.groupby('A')
2. 存储所有子DataFrame到字典(推荐)
使用字典推导式可以一键生成所有子表的集合,字典的键为A列的取值,值为对应的子DataFrame:
# reset_index(drop=True) 作用是重置子表行索引从0开始,和你给出的示例行号效果一致 # 若需要保留原始数据的行索引,直接删除该方法即可 df_dict = {group_val: sub_df.reset_index(drop=True) for group_val, sub_df in grouped}
3. 调用指定取值的子表
需要提取对应A列值的子表时,直接用对应键取值即可:
# 提取A列取值为120的子表 print(df_dict[120]) # 提取A列取值为121的子表 print(df_dict[121])
4. 批量遍历处理所有子表
如果需要对所有子表做统一处理,可以直接遍历分组对象:
for a_val, sub_df in grouped: print(f"取值为{a_val}的子DataFrame:") print(sub_df.reset_index(drop=True)) # 此处可添加你对每个子表的自定义处理逻辑
内容的提问来源于stack exchange,提问作者MaxDragonheart
相关产品推荐
相关产品推荐

