You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用for循环将pandas DataFrame列存入字典仅保留最后一列问题求助

问题根源

循环内的赋值逻辑错误,每一轮循环都执行dfDic = {featureName:df.iloc[:,[colCounter]]},相当于每次都生成一个仅包含当前列键值对的新字典,再覆盖掉原来的dfDic变量,最终循环结束后只保留了最后一轮生成的字典,所以只有最后一列的内容。

修复方法

方案1:修改原有循环逻辑

不覆盖整个字典,改为给字典新增键值对即可:

#Names of columns in the dataframe 
featureList = df.columns
print(featureList)
#number of columns in the dataframe
noOfCol = len(df.axes[1])
print(noOfCol)
#number of rows
noOfRow = len(df.axes[0])
print(noOfRow)

#creating a dictionary for storing all the cols separately
dfDic = dict()
colCounter = 0
for featureName in featureList:
  # 改为给字典新增键值对,而非重新赋值整个字典
  dfDic[featureName] = df.iloc[:,[colCounter]] 
  colCounter +=1

print(dfDic)

方案2:更简洁的实现方式

无需手动维护计数器,直接通过字典推导式实现,代码更简洁不易出错:
如果需要和原有代码保持一致,存储单列DataFrame格式的值:

dfDic = {col: df[[col]] for col in df.columns}

如果需要存储Series格式的列,可直接调用pandas内置方法:

dfDic = df.to_dict('series')

如果需要存储列表格式的列值:

dfDic = df.to_dict('list')

内容的提问来源于stack exchange,提问作者Saba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:45:03