首頁 >後端開發 >Python教學 >如何將 Pandas DataFrame 中的巢狀清單擴展為單獨的行?

如何將 Pandas DataFrame 中的巢狀清單擴展為單獨的行?

Linda Hamilton
Linda Hamilton原創
2024-12-17 02:38:25568瀏覽

How Can I Expand Nested Lists in Pandas DataFrames into Separate Rows?

解開Pandas DataFrame 中的巢狀清單:行擴充

在Pandas DataFrame 中處理資料時,您可能會遇到包含清單的列,這些列可能跨越多個值。為了便於分析和操作,有必要將這些清單轉換為單獨的行。這個過程被稱為“長形成”或“行擴展”,允許每個列表元素佔據自己的行。

為了實現這一點,Pandas 提供了一個名為 .explode() 的專用方法,0.25版本中引入。此方法將指定的包含清單的列無縫轉換為一系列行,每個元素成為獨立的行。

實作:

使用 .explode() 方法,只需指定要展開的列名稱即可。預設情況下,它將為列中的每個元素建立新行,同時保留所有其他列中的值。

例如,考慮一個包含「樣本」欄位和值清單的資料框:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {'trial_num': [1, 2, 3, 1, 2, 3],
     'subject': [1, 1, 1, 2, 2, 2],
     'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
    }
)

應用.explode()方法:

df.explode('samples')

產生以下資料幀:

   subject  trial_num  sample
0        1          1    0.57
1        1          1   -0.83
2        1          1    1.44
3        1          2   -0.01
4        1          2    1.13
5        1          2    0.36
6        2          1   -0.08
7        2          1   -4.22
8        2          1   -2.05
9        2          2    0.72
10       2          2    0.79
11       2          2    0.53

正如您所觀察到的,每個清單元素現在都有自己的行。值得注意的是,雖然該方法有效地展開列表,但它一次只針對單一列進行展開。

其他注意事項:

  • .explode() 方法處理包含清單和標量值的混合列,確保空列表和NaN 值
  • 如果資料框有多個包含清單的列,您可以使用巢狀的.explode() 呼叫將它們一一展開。
  • 如果您如果需要特定的列順序,可以在呼叫後手動重新調整列順序.explode().
  • 建議使用.reset_index(drop =True) 重設索引以獲得常規整數索引。

以上是如何將 Pandas DataFrame 中的巢狀清單擴展為單獨的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn