如何用pandas读取含NaN与带文本的超链接列?
解决Pandas读取Excel超链接丢失的问题
问题原因
你尝试的converters方法报错,是因为Pandas默认读取Excel时会将单元格内容直接转换为字符串类型,所以lambda函数中的x是字符串对象,自然没有value和hyperlink属性。
解决方案
直接使用openpyxl库读取Excel文件,遍历目标列的单元格,提取显示文本和超链接信息,再构建DataFrame。
代码示例
import openpyxl import pandas as pd # 文件路径 path = r'path_to_file' # 加载工作簿并指定工作表 wb = openpyxl.load_workbook(path) ws = wb['Jobs'] # 目标列:Pandas中的"Unnamed: 18"对应Excel的第19列(列标S) target_col = 19 link_data = [] # 遍历行(跳过表头,从第2行开始) for row in ws.iter_rows(min_row=2, min_col=target_col, max_col=target_col, values_only=False): cell = row[0] if not cell.value: # 处理NaN(空单元格) link_data.append(None) else: display_text = cell.value # 提取超链接(如果存在) hyperlink = cell.hyperlink.target if cell.hyperlink else None if hyperlink: link_data.append(f"{display_text}|{hyperlink}") else: link_data.append(display_text) # 生成包含超链接信息的DataFrame df = pd.DataFrame(link_data, columns=["Unnamed: 18"]) print(df)
补充说明
- 如果需要将提取的超链接数据与原Excel的其他列合并,可以先用Pandas读取整个表格,再将提取的超链接列替换进去。
- 确保已经安装
openpyxl库:pip install openpyxl
内容的提问来源于stack exchange,提问作者Tomasz Wójcik
相关产品推荐
相关产品推荐

