python - 迭代列表并通过函数传递结果并将结果保存在数据框中
问题描述
我有这个清单:
Peer_List_Members = [1967、2338、421、1275、2499、2240、881、2719、2894、2198、3120、3160、635]
我遍历这个列表如下:
for x in Peer_List_Members:
x = ID_Search(str(x))
print(x)
上面的函数通过函数“ID_Search(input_id)”传递每个元素,然后在数据库中查找数字的值并返回查找值:
def ID_Search(input_id):
returns_name = pd.read_sql_query("""
SELECT BaseHoldingID
FROM Holdings
WHERE HoldingID=""" + input_id
, conn)
returns_name = pd.DataFrame(returns_name)
BaseHoldingID = returns_name['BaseHoldingID'][0]
return(BaseHoldingID)
print(x) 的输出如下:
1774
2134
421
1267
2295
2046
867
2517
2694
2010
2874
2913
629
但是当迭代并尝试使用以下方法保存到新列表(lst)时:
lst=[]
for x in Peer_List_Members:
x = ID_Search(str(x))
lst.append(x)
print(lst)
我得到这个奇怪的输出!
[1774]
[1774, 2134]
[1774, 2134, 421]
[1774, 2134, 421, 1267]
[1774, 2134, 421, 1267, 2295]
[1774, 2134, 421, 1267, 2295, 2046]
[1774, 2134, 421, 1267, 2295, 2046, 867]
[1774, 2134, 421, 1267, 2295, 2046, 867, 2517]
...........
[1774, 2134, 421, 1267, 2295, 2046, 867, 2517, 2694, 2010, 2874, 2913, 629]
问题:首先我如何在附加时修复奇怪的输出。但理想情况下,我想将原始列表与新列表组合成一个数据框。
感谢您的帮助!非常感激。
解决方案
好的 - 我做了一些挖掘/谷歌搜索,并且能够找到一种方法......
def peerBaseHolding():
return [ID_Search(str(number)) for number in Peer_List_Members]
peerBaseHolding = peerBaseHolding()
peerBaseHolding = pd.DataFrame(peerBaseHolding, columns={'BaseHoldingID'})
Peer_List_Members = pd.DataFrame(Peer_List_Members, columns={'HoldingID'})
peerList = Peer_List_Members.merge(peerBaseHolding, how='inner', left_index=True, right_index=True)
peerList
它有效,但有更好的方法吗?
推荐阅读
- php - 将正常价格和销售价格放在 woocommerce 变化下拉菜单上
- postgresql - PostgreSQL 服务在后台运行多次
- security - 带有命令提示符的 WiFi 密码 windows 8.1
- android - 如何修改Android快捷方式标题?
- python - 有没有办法将包含多个 tensorflow 模型的烧瓶应用程序部署到 pythonanywhere 网络平台上?
- python - 如何从作为字典列表的键值中删除前导空格
- python - 在函数之外调用变量?
- agora.io - Agora-SDK [错误]: [866CE]None Ice Candidate 不允许
- reactjs - 在功能组件测试笑话和酶中模拟一个内部函数
- interface - 如何在codeandbox中将控制台面板右对齐?