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

如何通过索引循环提取Pandas DataFrame指定列的行值?

按索引通过for循环提取Pandas DataFrame的Duration列值

首先,你的DataFrame定义如下:

import pandas as pd
technologies = ({
    'Courses':["Spark","PySpark","Hadoop","Python","pandas","Oracle","Java"],
    'Fee' :[20000,25000,26000,22000,24000,21000,22000],
    'Duration':['30day', '40days' ,'35days', '40days', '60days', '50days', '55days']
              })
df = pd.DataFrame(technologies)
print(df)

输出结果:

Courses    Fee Duration
0    Spark  20000    30day
1  PySpark  25000   40days
2   Hadoop  26000   35days
3   Python  22000   40days
4   pandas  24000   60days
5   Oracle  21000   50days
6     Java  22000   55days

你尝试的代码无法运行的原因是:df[["Duration"]]返回的是单列DataFrame,而非Series,直接用[i]索引行不符合Pandas的索引规则,会触发KeyError。

以下是几种可行的解决方案:

方案1:提取为Series后按索引访问

先把Duration列转为Series,再通过索引循环取值:

duration_col = df['Duration']
for i in range(len(df)):
    d = duration_col[i]
    print(d)

方案2:用.iloc按位置索引

.iloc用于按整数位置访问行/列,适合明确通过索引位置取值的场景:

for i in range(len(df)):
    # 写法1:从单列DataFrame取第i行第0列的值
    d = df[["Duration"]].iloc[i, 0]
    # 写法2:直接定位到目标行的Duration列
    # d = df.iloc[i]['Duration']
    print(d)

方案3:直接遍历列元素(无需索引时优先用)

如果不需要用到索引i,直接遍历Duration列的元素更简洁高效:

for d in df['Duration']:
    print(d)

以上三种方案都能输出每行的Duration值,根据你是否需要使用索引i选择对应写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:15:21