我有一個名為 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>
添加回答
舉報
0/150
提交
取消