簡體   English   中英

迭代列表並通過函數傳遞結果並將結果保存在數據框中

[英]iterating a list and passing results through a function and saving results in a dataframe

我有這個清單:

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]

問題:首先如何在追加時修復奇怪的輸出。 但理想情況下,我想將原始列表與新列表組合成一個數據幀。

感謝您的任何幫助! 非常感激。

好的 - 我做了一些 digginh/谷歌搜索並且能夠找到一種方法......

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

它有效,但有沒有更好的方法來做到這一點?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM