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

Python循环中如何用索引x动态读取Pandas DataFrame列数据

问题排查

你写的循环有两个明显问题:

  • 列名是固定写死的字符串,没有把循环变量x拼接到列名里,每次循环取的都是同一列,完全没用到循环变量
  • 循环上限用了len(df),这个API返回的是DataFrame的行数,不是空间频率相关列的数量,会直接导致循环次数不对,要么取不全列,要么循环到后面报找不到列的错误。

实现方案

方案1:修正后的循环写法

如果你坚持用循环实现,只要正确拼接列名、匹配循环范围即可:

spatial_frequency = []
# 把n替换成你实际的空间频率相关列的总数量,比如总共有8列就写range(1,9)
for x in range(1, n+1):
    # 用f-string把循环变量x拼接到列名后缀里
    target_col = f"Spatial Frequency [lp/mm].{x}"
    spatial_frequency.append(df[target_col].values)

方案2:更推荐的无循环写法(不易出错)

不需要手动拼列名、数循环次数,直接用pandas的列名筛选能力一次性提取所有目标列,代码更简洁也不会出拼接错误:

# 自动匹配所有以"Spatial Frequency [lp/mm]"开头的列,不管后缀是什么
target_cols = df.columns.str.startswith("Spatial Frequency [lp/mm]")
spatial_frequency = df.loc[:, target_cols].values.T.tolist()

如果你不需要转成嵌套列表格式,直接用df.loc[:, target_cols]就能拿到所有空间频率列的DataFrame,后续做计算处理会更方便。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:01:06