pandas for循环仅输出最后结果 如何将每次结果追加为DataFrame新列
代码修改方案
你遇到的问题是循环内每次都重新创建R对象,导致旧结果被覆盖,只需调整R的初始化逻辑和结果写入方式即可,修改后完整代码如下:
import numpy as np import pandas as pd # 读取数据 路径前加r避免转义字符报错 DATA = pd.read_excel(r'C:\gskim\P4DS\Monthly Stock adjClose2.xlsx') DATA = DATA.set_index("Date") DATA1 = np.log(DATA/DATA.shift(1)) DATA2 = DATA1.drop(DATA1.index[0])*100 # 循环外提前初始化结果表R R = pd.DataFrame() for i in range(0, 276): Q = DATA2.iloc[i].dropna() W = sorted(abs(Q), reverse = False) W_qcut = pd.qcut(W, 5, labels = ['A', 'B', 'C', 'D', 'E']) F = Q.groupby(W_qcut).sum() # 将当前轮次结果作为新列写入R,列名用对应计算日期 R[DATA2.index[i]] = F # 输出完整结果 print(R) # 如需导出到Excel可取消注释下行 # R.to_excel("计算结果.xlsx")
核心修改说明
- 移除了循环内对R的重复赋值操作,改为在循环外创建空的结果存储对象
- 每轮计算完成后将结果作为新列追加到R中,列名绑定对应周期的日期,最终R的行是分组标签A~E,列是每轮计算对应的日期,符合需求的存储结构
内容的提问来源于stack exchange,提问作者SungMin Ye
相关产品推荐
相关产品推荐

