如何用Pandas读取Excel为DataFrame并拆分值为指定格式列表?
解决Pandas读取Excel后拆分列值并转换格式的问题
1. 读取Excel文件
先通过pandas.read_excel读取文件,建议添加keep_default_na=False避免空值被默认转换为NaN:
import pandas as pd # 替换为你的Excel文件路径和工作表名 df = pd.read_excel("company_data.xlsx", sheet_name="Sheet1", keep_default_na=False)
2. 定义格式转换函数
针对不同列的需求,编写两个转换函数处理字符串拆分与类型转换:
def to_string_list(text): # 拆分逗号分隔的文本,去除元素前后空格,返回字符串列表 return [item.strip() for item in text.split(",")] def to_integer_list(text): # 拆分逗号分隔的文本,转换为整数后返回列表 return [int(item.strip()) for item in text.split(",")]
3. 批量转换DataFrame列格式
将对应列应用转换函数,替换原列或生成目标格式的新列:
# 确保Company列为纯字符串格式 df["Company"] = df["Company"].astype(str) # 转换搜索名称列为字符串列表 df["company_name_for_search"] = df["company_name_for_search"].apply(to_string_list) # 转换注册号列为整数列表 df["company_register"] = df["company_register"].apply(to_integer_list)
4. 遍历提取变量执行搜索
现在可以直接遍历每行数据,提取指定格式的变量用于后续搜索逻辑:
for _, row in df.iterrows(): # 提取目标变量 company = row["Company"] name_search_list = row["company_name_for_search"] register_search_list = row["company_register"] # 遍历名称列表执行搜索 for name in name_search_list: # 替换为你的数据库搜索逻辑 print(f"搜索公司名称:{name}") # 遍历注册号列表执行搜索 for reg_num in register_search_list: # 替换为你的数据库搜索逻辑 print(f"搜索公司注册号:{reg_num}")
额外处理建议
- 如果Excel中使用的是逗号以外的分隔符(如分号),将
split(",")替换为对应分隔符即可 - 若存在空值或非标准格式内容,可在转换函数中添加异常处理:
def to_integer_list(text): if not text: return [] try: return [int(item.strip()) for item in text.split(",")] except ValueError: print(f"无法转换为整数:{text}") return []
内容的提问来源于stack exchange,提问作者FábioRB
相关产品推荐
相关产品推荐

