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

如何在循环中无索引存储DataFrame指定列值到列表?

解决方法:提取列的纯数值而非Series对象

看起来你卡在了循环中存储列数据的环节——当前代码把带索引的Series对象塞进了列表,导致后续转DataFrame时不符合预期。下面是针对性的修改方案:

核心问题拆解

你现在用df.iloc[:,2]取到的是完整的Series(带索引),直接append到列表里,就会让列表每个元素都是Series对象。要实现“只存数值”的需求,得把Series转换成纯数值集合。

修改后的完整代码

import pandas as pd
import numpy as np

l = []
n = 1000  # 迭代次数
for i in range(0, n):
    # 这里保留你原来的df修改逻辑,继续用inplace=True操作(比如df.drop(..., inplace=True)这类)
    # 提取第3列(iloc[:,2])的纯数值,两种方式二选一:
    l.append(df.iloc[:,2].values)  # 转成numpy数组,不带索引
    # 或者用原生列表:l.append(df.iloc[:,2].tolist())

# 后续转换为目标DataFrame
df_new = pd.DataFrame(np.array(l), columns=df.index)

关键细节说明

  1. 提取纯数值的两种方式:
    • .values返回Series对应的numpy数组,完全剥离索引信息;
    • .tolist()返回Python原生列表,效果和数组一致,后续转numpy也很顺畅。
  2. 关于inplace=True:
    这个参数是针对修改DataFrame的操作(比如填充缺失值、删除列等),和提取列数值的逻辑无关。你只需要在循环里修改df的代码中保持inplace=True即可,不影响数值提取。
  3. 列索引的小提醒:
    你问题里提到要存“第4列”,但代码里用的是iloc[:,2](对应第3列,因为iloc是0起始索引),如果确实要取第4列,记得改成iloc[:,3]哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:17:41