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

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

內存錯誤:- 如何使用一個公共 ID 列從一個數據幀到另一個數據幀?

內存錯誤:- 如何使用一個公共 ID 列從一個數據幀到另一個數據幀?

慕工程0101907 2022-04-23 17:19:13
我有兩個數據框 df1 和 df2。它們之間有一個共同的 ID 列。我需要根據 df1 中的 ID 從 df2 列中提取數據,但是我面臨 MemoryError,因為數據幀很大,每個數據點超過 300 萬個。我試過使用: -aq = pd.DataFrame(np.where(df2[df2['pid1'].isin(df1['shortId'])]))但它遇到內存錯誤。有沒有有效的方法來做到這一點?數據框如下所示:-df1:-ShortID x   y   zqwe 1   1   1asd 1   1   1zxc 1   1   1rty 1   1   1fgh 1   1   1vbn 1   1   1df2:-pid1    pid2    Col1    Col2    Col3    Col4qwe qasd    values  values  values  valuesasd uio values  values  values  valueszxc plm values  values  values  valuesrty okn values  values  values  valuesfgh uhb values  values  values  valuesvbn tgv values  values  values  valuesqasd    qwe values  values  values  valuesuio asd values  values  values  valuesplm zxc values  values  values  valuesokn rty values  values  values  valuesuhb fgh values  values  values  valuestgv vbn values  values  values  values結果應如下所示:-ShortID x   y   z   Col1    Col2    Col3    Col4qwe 1   1   1   values  values  values  valuesasd 1   1   1   values  values  values  valueszxc 1   1   1   values  values  values  valuesrty 1   1   1   values  values  values  valuesfgh 1   1   1   values  values  values  valuesvbn 1   1   1   values  values  values  values
查看完整描述

1 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

merge應該更有效:

df1.merge(df2, left_on='ShortID', right_on='pid1', how='left').drop(columns=['pid1','pid2'])

如果這仍然引發內存錯誤,您可能需要使用dask dataframes,即將數據讀入 dask dataframes 并以與上面編寫的相同方式合并它們(除了 dask 2.2.0 不支持columns參數 in drop,因此您必須使用.drop('rkey', axis=1)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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