如何將 Pandas 清單的列轉換為多行?

Susan Sarandon
發布: 2024-11-27 07:49:09
原創
980 人瀏覽過

How Can I Transform a Pandas Column of Lists into Multiple Rows?

Pandas 列錶列:為每個列表元素建立一行

在Pandas 資料框中,可能需要轉換包含列表的列分成多行,其中列表的每個元素佔據自己的行。要實現這一點,有兩個可行的選擇。

Pandas>=0.25 內建的爆炸方法

對於 Pandas 0.25 及更高版本,.explode( ) 方法是專門為此目的引入的。它有效地將列表轉換為單獨的行。

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)]
                   })

df.explode('samples').reset_index(drop=True)  # Resetting the index for clarity
登入後複製

此方法處理包含清單和標量以及空白清單和 NaN 的混合欄位。但是,需要注意的是,explode 一次對單一列進行操作。

Pandas 的自訂函數

對於早期版本的Pandas,可以使用自訂函數:

def explode_list_column(df, column):
    # Create an empty list to store the expanded rows
    exploded_rows = []

    # Iterate through each cell in the specified column
    for row in df[column]:
        # Iterate through each element in the list
        for element in row:
            # Add a new row to the list, copying data from the current row and adding the new element
            exploded_rows.append(list(row) + [element])

    # Convert the expanded rows into a DataFrame
    return pd.DataFrame(exploded_rows, columns=df.columns + ['list_element'])
登入後複製

此函數採用DataFrame和包含清單的列的名稱作為參數,它傳回一個新的DataFrame,其中每個列表元素有一列。

# Applying the exploding function
exploded_df = explode_list_column(df, 'samples')
登入後複製

以上是如何將 Pandas 清單的列轉換為多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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