如何通过索引循环提取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
相关产品推荐
相关产品推荐

