如何在Pandas中遍历行?遇InvalidIndexError求解决
解决Pandas遍历行时的InvalidIndexError问题
错误原因很直接:sd.iterrows()每次迭代返回的是**(行索引, 行数据对象)**的元组,你直接把这个元组row作为索引去取sd[row],肯定触发InvalidIndexError。
给你三种可行的修正方案:
1. 正确使用iterrows()解构数据
import pandas as pd sd = pd.read_excel('DF.xlsx') # 解构迭代返回的元组,idx是行索引,row是行数据对象 for idx, row in sd.iterrows(): # 替换成你数据中存储IRFC:NSE的列名,比如列名叫ticker/股票代码等 ticker = row['ticker'] url1 = f'https://www.google.com/finance/quote/{ticker}' # 这里可以添加对url1的操作,比如打印、存储等 print(url1)
2. 用itertuples()更高效遍历
如果不需要行索引,itertuples()比iterrows()性能更好:
sd = pd.read_excel('DF.xlsx') # index=False表示不返回行索引 for row in sd.itertuples(index=False): ticker = row.ticker # 同样替换为实际列名 url1 = f'https://www.google.com/finance/quote/{ticker}' print(url1)
3. 矢量化操作(推荐,无需遍历)
Pandas最擅长批量操作,直接对整列处理效率最高:
sd = pd.read_excel('DF.xlsx') # 生成新列存储所有链接 sd['finance_url'] = 'https://www.google.com/finance/quote/' + sd['ticker'] # 查看结果 print(sd['finance_url'])
注意:所有代码中的ticker都要替换成你Excel表格中对应IRFC:NSE所在列的实际列名,比如列名叫“证券代码”就改成row['证券代码']或sd['证券代码']。
内容的提问来源于stack exchange,提问作者Aryaman
相关产品推荐
相关产品推荐

