亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas:做嵌套 for 循環的更有效方法加上 if

Pandas:做嵌套 for 循環的更有效方法加上 if

喵喵時光機 2022-12-06 16:25:14
我有一個名為 namelist 的列表,其中包含 1000 個名稱和一個名為 df_all 的數據框,其中包含所有 1000 個名稱,但由于時間戳不同而具有重復的行。df_all 的 Len 大約是 2000+。我想將這些數據拆分成單獨的數據幀。我的代碼如下:df_store = [] for i in range(len(namelist)) :    temp = []     for j in range(len(df_all)):    if(df_all['name'] == namelist[i]) :        temp1.append(df_all[j,:]:        temp_df=pd. DataFrame(temp1).reset_index(drop=1)    df_store.append(temp_df)此代碼需要 15 分鐘才能循環。我想知道是否有辦法更有效地做到這一點?我需要 df_store 是可迭代的,這樣每個迭代器都是一個不同名稱的 df。
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

您不需要運行兩個循環來獲得結果。Pandas DataFrame 提供布爾數組索引,它也非???。請檢查以下內容:


df_store = [] 

for i in range(len(namelist)) :

    temp_df = df_all[df_all.name==namelist[i]].copy()

    df_store.append(temp_df)

在這里我使用了復制函數,因為 df_all 上的布爾索引將返回 df_all 上的視圖,并且修改其中的任何內容都會對原始 df_all 產生相同的影響。


希望這可以幫助?。?/p>


查看完整回答
反對 回復 2022-12-06
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號