如何用Python Pandas读取无列名Excel的A列与B列并实现图片下载
解决无列名Excel的读取与图片下载问题
当Excel文件没有列名时,你需要告诉pandas不要把第一行当作列名,直接从第一行开始读取数据。你之前的错误是把index_col这个读取参数当成了行的索引键来用,完全搞错了用法。
正确处理步骤:
- 读取Excel时,给
pd.read_excel加上header=None参数,这样pandas会用0、1、2...作为列索引,对应Excel的A、B、C列; - 迭代时直接用
row[0]取A列的url,row[1]取B列的name; - 同时修正原代码里的缩进问题(原代码中
requests.get和if语句缩进错误,会导致变量作用域问题)。
修正后的完整代码:
import requests import pandas as pd # 读取无列名的Excel,header=None表示第一行是数据而非列名 df = pd.read_excel(r'C:\Users\exdata1.xlsx', header=None) # 迭代每一行数据 for index, row in df.iterrows(): url = row[0] # 0对应Excel的A列 name = row[1] # 1对应Excel的B列 file_name = f"{name}.jpeg" # 发起请求下载图片 r = requests.get(url) if r.status_code == 200: with open(file_name, "wb") as f: f.write(r.content) print(f"已保存:{file_name}")
关键说明:
header=None是核心:没有这个参数的话,pandas会默认把Excel的第一行当成列名,导致你读取不到真正的数据;- 不要用
row['index_col(0)']这种写法:index_col是read_excel的参数,用来指定哪一列作为行索引,不是获取列值的方式; - 原代码的缩进错误已修正:
requests.get和if语句必须放在for循环内部,否则只会处理最后一行数据。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

