如何按列名拆分DataFrame并按迭代序号重命名新数据框
解决方案
直接实现序号命名的拆分代码
你可以使用enumerate()函数同时获取迭代序号和对应的LocationId值,生成dfM_1、dfM_2这类按序号命名的子DataFrame:
for idx, name in enumerate(Alldata['LocationId'].unique(), start=1): locals()[f'dfM_{idx}'] = Alldata[Alldata['LocationId'] == name]
你之前代码的问题
你尝试的代码逻辑混乱,错误嵌套循环结构,没有将序号与DataFrame拆分操作正确关联,因此无法生成预期命名的变量。
更优的实践方案
不推荐用locals()动态创建变量,这类变量难以追踪和维护。更建议用字典存储所有子DataFrame,管理起来更清晰:
# 创建字典存储子DataFrame sub_dfs = {} for idx, name in enumerate(Alldata['LocationId'].unique(), start=1): sub_dfs[f'dfM_{idx}'] = Alldata[Alldata['LocationId'] == name] # 调用子DataFrame示例:获取第一个子DataFrame first_sub_df = sub_dfs['dfM_1']
内容的提问来源于stack exchange,提问作者Henrik Thomsen
相关产品推荐
相关产品推荐

