迭代列表查询结果追加列表输出异常,如何合并原列表与结果为DataFrame
问题1:修复列表追加的异常输出
你描述的「每次append后打印lst,逐次输出长度递增的列表」本身属于正常执行逻辑,是因为你把print(lst)写在了for循环内部,每次新增元素后都会打印当前列表的完整内容。如果仅需要获取最终的完整结果列表,调整打印语句的位置即可,正确写法如下:
# 空列表初始化必须放在for循环外部,避免每次循环被重置 base_holding_list = [] for holding_id in Peer_List_Members: base_id = ID_Search(str(holding_id)) base_holding_list.append(base_id) # 仅在循环结束后打印一次完整列表 print(base_holding_list)
如果调整后仍出现输出异常,可检查是否存在循环内重复初始化列表、函数返回值重复的问题。
问题2:合并为Pandas DataFrame
直接将两个列表传入DataFrame构造函数,自定义对应的列名即可:
import pandas as pd result_df = pd.DataFrame({ "HoldingID": Peer_List_Members, "BaseHoldingID": base_holding_list })
可选优化建议
原ID_Search函数直接拼接SQL字符串存在SQL注入风险,同时未处理查询无结果的场景,可调整为参数化查询的写法:
def ID_Search(input_id): returns_name = pd.read_sql_query(""" SELECT BaseHoldingID FROM Holdings WHERE HoldingID = %s """, conn, params=(input_id,)) if not returns_name.empty: return returns_name['BaseHoldingID'].iloc[0] # 查询无结果时返回空值,避免索引报错 return None
内容的提问来源于stack exchange,提问作者Herman L
相关产品推荐
相关产品推荐

