如何有效解除 Pandas DataFrame 中多個清單列的嵌套?

Susan Sarandon
發布: 2024-11-17 20:58:02
原創
437 人瀏覽過

How to Efficiently Unnest Multiple List Columns in a Pandas DataFrame?

如何有效地解除(爆炸)pandas DataFrame 中的多個列表列

問題:在大型資料集中爆炸嵌套列表列

處理時pandas DataFrames,有時需要「取消嵌套」或「爆炸」欄位包含多行清單。然而,這可能是一個計算成本很高的操作,尤其是對於大型資料集。

解決方案:使用 pandas >= 1.3

對於 pandas 1.3 及更高版本,有一個內建函數稱為DataFrame.explode 允許您同時取消嵌套多個列。此函數要求所有清單列具有相同的長度。使用方法:

df.explode(['B', 'C', 'D', 'E']).reset_index(drop=True)
登入後複製

熊貓的解決方案

1.3

對於舊版的pandas,需要稍微複雜一點的方法:
  1. 將DataFrame的索引設定為不應分解的列。
  2. 對每一個要分解的欄位套用Series.explode。
  3. 重設索引以獲得未嵌套的DataFrame.
df.set_index(['A']).apply(pd.Series.explode).reset_index()
登入後複製

效率考量

兩種方法都提供了高效的解決方案,set_index 和explode 比DataFrame.explode 稍快。下表顯示了效能比較:

Method Time (seconds)
DataFrame.explode 0.00259
Set index and explode 0.00127
Stacking approach 0.120

關於重複問題的注意事項

雖然這個問題最初被標記為重複,但它特別強調需要一種可以處理大型問題的有效方法資料集。重複問題的答案未能充分滿足此要求。

以上是如何有效解除 Pandas DataFrame 中多個清單列的嵌套?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板