如何用for循环实现将DataFrame按固定步长拆分为PC1-PC17变量?
解决方法
方法1:动态创建PC1-PC17变量
直接通过globals()函数动态生成对应名称的变量,和你手动定义的效果完全一致:
for i in range(1, 18): start_idx = (i - 1) * 23 end_idx = i * 23 globals()[f'PC{i}'] = dfA.iloc[start_idx:end_idx]
方法2:用字典存储(更推荐)
动态生成独立变量不利于后续批量操作,更推荐用字典统一管理这些拆分后的DataFrame:
pc_data = {} for i in range(1, 18): start_idx = (i - 1) * 23 end_idx = i * 23 pc_data[f'PC{i}'] = dfA.iloc[start_idx:end_idx] # 访问示例:pc_data['PC1'] 对应原来的PC1
原代码问题说明
你之前的循环有两个核心问题:
- 没有定义循环变量
i的取值逻辑,也没关联到x的循环 PC[i]的写法不成立,因为PC不是预先定义的列表/字典,无法通过索引赋值
内容的提问来源于stack exchange,提问作者Alk12
相关产品推荐
相关产品推荐

